diff --git a/DEPS b/DEPS index 1fa4ab4..33a9383 100644 --- a/DEPS +++ b/DEPS
@@ -280,7 +280,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Skia # and whatever else without interference from each other. - 'skia_revision': 'fec7d8df2941914988541de494b25fbdc7906f0a', + 'skia_revision': '5f2e30e0c8bd00b2ff314a6c751ceac95fedb913', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. @@ -352,7 +352,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling chromium_variations # and whatever else without interference from each other. - 'chromium_variations_revision': 'de44a12bcc9d8b0d3088ae6db3324ef70b0aa2c0', + 'chromium_variations_revision': '9be189a60865bf5fed52f2d6dd76ceb54e231ddb', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling CrossBench # and whatever else without interference from each other. @@ -372,7 +372,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling devtools-frontend # and whatever else without interference from each other. - 'devtools_frontend_revision': 'e6bffbe1691bf4294e533ddba391f6739580b9e0', + 'devtools_frontend_revision': '32ab3025514394538797f79c89b2f0a02fed255f', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libprotobuf-mutator # and whatever else without interference from each other. @@ -396,7 +396,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'dawn_revision': '8c8e27355e127401b523e10ce908446719bcf030', + 'dawn_revision': 'e2894d1f5a19ec70b65828be0c2363f55e1a4327', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -799,143 +799,143 @@ 'objects': [ { # The Android libclang_rt.builtins libraries are currently only included in the Linux clang package. - 'object_name': 'Linux_x64/clang-llvmorg-20-init-16062-g091448e3-1.tar.xz', - 'sha256sum': '312f81ba0a77fb66f077f4af105fed1ae3f7068c63127b79c560336befd7e957', - 'size_bytes': 54162056, - 'generation': 1734710928554494, + 'object_name': 'Linux_x64/clang-llvmorg-20-init-17108-g29ed6000-1.tar.xz', + 'sha256sum': 'e649b5ae7db215ede1d17d63e60f187c9773bc3bb465e4ff25148f58783c0588', + 'size_bytes': 54177680, + 'generation': 1736382900858370, 'condition': '(host_os == "linux" or checkout_android) and non_git_source', }, { - 'object_name': 'Linux_x64/clang-tidy-llvmorg-20-init-16062-g091448e3-1.tar.xz', - 'sha256sum': '53b1db6cc843ffca33075ced2ebb02f288dfe96377b53d1ca7c873b7c15cbb91', - 'size_bytes': 13132028, - 'generation': 1734710928725653, + 'object_name': 'Linux_x64/clang-tidy-llvmorg-20-init-17108-g29ed6000-1.tar.xz', + 'sha256sum': '98aeee7a6ea7b555868c16d009f0232c421ef88cb5a6a60c38b78255dd4faced', + 'size_bytes': 13149440, + 'generation': 1736382900905802, 'condition': 'host_os == "linux" and checkout_clang_tidy and non_git_source', }, { - 'object_name': 'Linux_x64/clangd-llvmorg-20-init-16062-g091448e3-1.tar.xz', - 'sha256sum': '8a104f0285327201712496fe039425f859002dc9ecdec52b00f86122097adce0', - 'size_bytes': 27649620, - 'generation': 1734710928800469, + 'object_name': 'Linux_x64/clangd-llvmorg-20-init-17108-g29ed6000-1.tar.xz', + 'sha256sum': '767ad010ec7d99a62a2c6535cca8f3bc55c4866b2619462fb303e0bc9a5f1977', + 'size_bytes': 27687240, + 'generation': 1736382900911727, 'condition': 'host_os == "linux" and checkout_clangd and non_git_source', }, { - 'object_name': 'Linux_x64/llvm-code-coverage-llvmorg-20-init-16062-g091448e3-1.tar.xz', - 'sha256sum': 'b461b1ef2783b55403eb5002cb2a5e4a833b668cf6983457cb9e8b341b9b0cba', - 'size_bytes': 2291412, - 'generation': 1734710929037009, + 'object_name': 'Linux_x64/llvm-code-coverage-llvmorg-20-init-17108-g29ed6000-1.tar.xz', + 'sha256sum': 'b61cee4a240859bab2b541721a5afd8333c0fc4eea2e568a63cf71529efefa76', + 'size_bytes': 2289668, + 'generation': 1736382900990620, 'condition': 'host_os == "linux" and checkout_clang_coverage_tools and non_git_source', }, { - 'object_name': 'Linux_x64/llvmobjdump-llvmorg-20-init-16062-g091448e3-1.tar.xz', - 'sha256sum': 'fd415f35825401b91c02bb4883bab3ee0bb2981fa3c83268242dbb83da494a17', - 'size_bytes': 5374952, - 'generation': 1734710928876309, + 'object_name': 'Linux_x64/llvmobjdump-llvmorg-20-init-17108-g29ed6000-1.tar.xz', + 'sha256sum': 'a2eb777a2013c9d647c957b9cbb3d3937b66c6443ed9118d8a1eeb3fea6250d3', + 'size_bytes': 5348020, + 'generation': 1736382900960786, 'condition': '(checkout_linux or checkout_mac or checkout_android and host_os != "mac") and non_git_source', }, { - 'object_name': 'Mac/clang-llvmorg-20-init-16062-g091448e3-1.tar.xz', - 'sha256sum': 'a87e78f91148b227e2791606f1d6491e65a3343e488a5d9afb28739e89b892b9', - 'size_bytes': 49075240, - 'generation': 1734710930234741, + 'object_name': 'Mac/clang-llvmorg-20-init-17108-g29ed6000-1.tar.xz', + 'sha256sum': '40b2964db638f50f62c410202a0e150809b521eab8d764344dfcc82ce2fedda1', + 'size_bytes': 49122796, + 'generation': 1736382902685415, 'condition': 'host_os == "mac" and host_cpu == "x64"', }, { - 'object_name': 'Mac/clang-mac-runtime-library-llvmorg-20-init-16062-g091448e3-1.tar.xz', - 'sha256sum': '6126aa8fb58ac245aa3fcc3da7500aa218943a062a66b10facf9034dff50b837', - 'size_bytes': 973872, - 'generation': 1734710937791397, + 'object_name': 'Mac/clang-mac-runtime-library-llvmorg-20-init-17108-g29ed6000-1.tar.xz', + 'sha256sum': '6dd34f8c8b70a1bf1453a74204c62669abe84e8e7f9625cbc16327b3fab8b943', + 'size_bytes': 972748, + 'generation': 1736382909396308, 'condition': 'checkout_mac and not host_os == "mac"', }, { - 'object_name': 'Mac/clang-tidy-llvmorg-20-init-16062-g091448e3-1.tar.xz', - 'sha256sum': '4c64b2240cb7b914f688e63359af9f12c05ade20c2fc535a77269e4ab791c1c3', - 'size_bytes': 12745672, - 'generation': 1734710930422203, + 'object_name': 'Mac/clang-tidy-llvmorg-20-init-17108-g29ed6000-1.tar.xz', + 'sha256sum': '194df82314e98d9c2b8c3d0810706bdedcdd60997b622eea07a1628ab94f28c3', + 'size_bytes': 12765652, + 'generation': 1736382902742379, 'condition': 'host_os == "mac" and host_cpu == "x64" and checkout_clang_tidy', }, { - 'object_name': 'Mac/clangd-llvmorg-20-init-16062-g091448e3-1.tar.xz', - 'sha256sum': '108cb2d05898954bbecb6ea7f0892f89f2ec4956d91e360fbf62dc200cc28582', - 'size_bytes': 26510732, - 'generation': 1734710930517598, + 'object_name': 'Mac/clangd-llvmorg-20-init-17108-g29ed6000-1.tar.xz', + 'sha256sum': 'a151f0d3958c8f469339c57f60e336cbf066fa94c5c841ac6b8e05cd09077890', + 'size_bytes': 26561888, + 'generation': 1736382902744981, 'condition': 'host_os == "mac" and host_cpu == "x64" and checkout_clangd', }, { - 'object_name': 'Mac/llvm-code-coverage-llvmorg-20-init-16062-g091448e3-1.tar.xz', - 'sha256sum': '227998c40ca12ed2e35c45f306baeee7b8e0e44ee149ddc85aece82ff6964aad', - 'size_bytes': 2249192, - 'generation': 1734710930772724, + 'object_name': 'Mac/llvm-code-coverage-llvmorg-20-init-17108-g29ed6000-1.tar.xz', + 'sha256sum': 'e14e803b4841a7a392f960278e7225b61453f1cca3086e7cdfb1c3cee813a85d', + 'size_bytes': 2250480, + 'generation': 1736382902843064, 'condition': 'host_os == "mac" and host_cpu == "x64" and checkout_clang_coverage_tools', }, { - 'object_name': 'Mac_arm64/clang-llvmorg-20-init-16062-g091448e3-1.tar.xz', - 'sha256sum': '7783806795f320f06abf77f8066e64448a101a1a40695ba6252b9c6315b7fdf2', - 'size_bytes': 43083188, - 'generation': 1734710939037981, + 'object_name': 'Mac_arm64/clang-llvmorg-20-init-17108-g29ed6000-1.tar.xz', + 'sha256sum': '11238b743b1c3157b64f261118ee0884f5b7f5f9afc235d4c47c1afc52556b1b', + 'size_bytes': 43127752, + 'generation': 1736382911237265, 'condition': 'host_os == "mac" and host_cpu == "arm64"', }, { - 'object_name': 'Mac_arm64/clang-tidy-llvmorg-20-init-16062-g091448e3-1.tar.xz', - 'sha256sum': '6d90f4b059a505baf0090ccbc8bf3a55a4d17715569645e575d47cff60d4ddd4', - 'size_bytes': 11350532, - 'generation': 1734710939102253, + 'object_name': 'Mac_arm64/clang-tidy-llvmorg-20-init-17108-g29ed6000-1.tar.xz', + 'sha256sum': '00a42f1c03272d8f9e0c9531712110422936fb9365c66206becdc7dfa27500d8', + 'size_bytes': 11362620, + 'generation': 1736382911277357, 'condition': 'host_os == "mac" and host_cpu == "arm64" and checkout_clang_tidy', }, { - 'object_name': 'Mac_arm64/clangd-llvmorg-20-init-16062-g091448e3-1.tar.xz', - 'sha256sum': '73de9e6907e145a21fc23125baeedfbca512121a0ed4417d6b180376cc14eb9d', - 'size_bytes': 22968152, - 'generation': 1734710939199537, + 'object_name': 'Mac_arm64/clangd-llvmorg-20-init-17108-g29ed6000-1.tar.xz', + 'sha256sum': 'eb2c179811101e49a6156b55624a6292688c0a4ef1e79d0b05ef03f2a17f405f', + 'size_bytes': 22998836, + 'generation': 1736382911247931, 'condition': 'host_os == "mac" and host_cpu == "arm64" and checkout_clangd', }, { - 'object_name': 'Mac_arm64/llvm-code-coverage-llvmorg-20-init-16062-g091448e3-1.tar.xz', - 'sha256sum': 'bd7b522a4b5f1a8741d41fe7bab3a36ff1dccba093ec3eed9cb32dce48c86b6a', - 'size_bytes': 1975468, - 'generation': 1734710939499752, + 'object_name': 'Mac_arm64/llvm-code-coverage-llvmorg-20-init-17108-g29ed6000-1.tar.xz', + 'sha256sum': '9c06d812bf98fc1ca1de9afaf031efa2334b3c1039969ee90689a810726db83c', + 'size_bytes': 1977132, + 'generation': 1736382911314127, 'condition': 'host_os == "mac" and host_cpu == "arm64" and checkout_clang_coverage_tools', }, { - 'object_name': 'Win/clang-llvmorg-20-init-16062-g091448e3-1.tar.xz', - 'sha256sum': '1b197f968fdc7e5a9a4ce3c76f8490d5b35877fca755771510a9e9292275128f', - 'size_bytes': 46308816, - 'generation': 1734710948582253, + 'object_name': 'Win/clang-llvmorg-20-init-17108-g29ed6000-1.tar.xz', + 'sha256sum': '554d4d0b22b7c682dd05bb912b9f2c1a13248d38660f3f1e15444ef0970fb0e5', + 'size_bytes': 46344548, + 'generation': 1736382920155077, 'condition': 'host_os == "win"', }, { - 'object_name': 'Win/clang-tidy-llvmorg-20-init-16062-g091448e3-1.tar.xz', - 'sha256sum': '3a2fb754132ced5c22ef6dec34e411b07947c0e03ff7c05db60c8923c23814b6', - 'size_bytes': 12944020, - 'generation': 1734710948743476, + 'object_name': 'Win/clang-tidy-llvmorg-20-init-17108-g29ed6000-1.tar.xz', + 'sha256sum': 'fbb40ae15b7c2fc408d8329eb6274d3422c6fb4110f27655adb8cd642d7b62b5', + 'size_bytes': 12970212, + 'generation': 1736382920246226, 'condition': 'host_os == "win" and checkout_clang_tidy', }, { - 'object_name': 'Win/clang-win-runtime-library-llvmorg-20-init-16062-g091448e3-1.tar.xz', - 'sha256sum': 'b0db5463446fdc218f4ae998c6f78d275c274fe023dd2f9d78941c01827dcd46', - 'size_bytes': 2457348, - 'generation': 1734710956415612, + 'object_name': 'Win/clang-win-runtime-library-llvmorg-20-init-17108-g29ed6000-1.tar.xz', + 'sha256sum': '98a76f1ec725bbf112fe91ba007bc39ca1efe1f1923d1c5a7cf2812e8c34b218', + 'size_bytes': 2458356, + 'generation': 1736382926959753, 'condition': 'checkout_win and not host_os == "win"', }, { - 'object_name': 'Win/clangd-llvmorg-20-init-16062-g091448e3-1.tar.xz', - 'sha256sum': 'f6a920b6f0325133affac130eab0ab27dc2cc602a0ab604660b526ed2e0d4914', - 'size_bytes': 25572060, - 'generation': 1734710948820492, + 'object_name': 'Win/clangd-llvmorg-20-init-17108-g29ed6000-1.tar.xz', + 'sha256sum': 'f766b3623240184b7d668b8e4e9c6070f6c56ee676cfed9a98375653922ccda8', + 'size_bytes': 25602964, + 'generation': 1736382920261395, 'condition': 'host_os == "win" and checkout_clangd', }, { - 'object_name': 'Win/llvm-code-coverage-llvmorg-20-init-16062-g091448e3-1.tar.xz', - 'sha256sum': '29b1eb6e91a1a084632f2621911c1f835eef9411275b6741d961e2eac4efe0d3', - 'size_bytes': 2360676, - 'generation': 1734710949094107, + 'object_name': 'Win/llvm-code-coverage-llvmorg-20-init-17108-g29ed6000-1.tar.xz', + 'sha256sum': '7f23a02c44dac5fb1139cc5943fc764b7c49bab152c76a416785f1413cfbaf0d', + 'size_bytes': 2361572, + 'generation': 1736382920285247, 'condition': 'host_os == "win" and checkout_clang_coverage_tools', }, { - 'object_name': 'Win/llvmobjdump-llvmorg-20-init-16062-g091448e3-1.tar.xz', - 'sha256sum': '958f0271bac109b5b6952ed3a84b7e334d0392f847d2038334dbb61688574ed0', - 'size_bytes': 5455196, - 'generation': 1734710948890307, + 'object_name': 'Win/llvmobjdump-llvmorg-20-init-17108-g29ed6000-1.tar.xz', + 'sha256sum': '8884520329694e6f35ab9790f65a474e04bafc541d6d40592f43356f44ee0d40', + 'size_bytes': 5439908, + 'generation': 1736382920291826, 'condition': 'checkout_linux or checkout_mac or checkout_android and host_os == "win"', }, ] @@ -946,31 +946,31 @@ 'bucket': 'chromium-browser-clang', 'objects': [ { - 'object_name': 'Linux_x64/rust-toolchain-8a1f8039a7ded79d3d4fe97b110016d89f2b11e2-1-llvmorg-20-init-16062-g091448e3.tar.xz', - 'sha256sum': 'd95be7651ce879e92b18949e1228775e01352960600ed4ff389815ce8848676d', - 'size_bytes': 124379804, - 'generation': 1734710923416010, + 'object_name': 'Linux_x64/rust-toolchain-ad211ced81509462cdfe4c29ed10f97279a0acae-1-llvmorg-20-init-17108-g29ed6000.tar.xz', + 'sha256sum': '1363529d7285ca8623c6408d49419921d459bbc461fa26ae57f5b5a620a57cc2', + 'size_bytes': 124591376, + 'generation': 1736456746490086, 'condition': 'host_os == "linux" and non_git_source', }, { - 'object_name': 'Mac/rust-toolchain-8a1f8039a7ded79d3d4fe97b110016d89f2b11e2-1-llvmorg-20-init-16062-g091448e3.tar.xz', - 'sha256sum': '01b25314a55fe0818b1f0b5ea8a8c6a469408618bb20f74f1e744c3d64b6c3eb', - 'size_bytes': 117354480, - 'generation': 1734710924611322, + 'object_name': 'Mac/rust-toolchain-ad211ced81509462cdfe4c29ed10f97279a0acae-1-llvmorg-20-init-17108-g29ed6000.tar.xz', + 'sha256sum': 'bc2446c14bf6316ab2a5797b65daf229aecb65e1fa25184ec740137196ec111e', + 'size_bytes': 117535632, + 'generation': 1736456748324065, 'condition': 'host_os == "mac" and host_cpu == "x64"', }, { - 'object_name': 'Mac_arm64/rust-toolchain-8a1f8039a7ded79d3d4fe97b110016d89f2b11e2-1-llvmorg-20-init-16062-g091448e3.tar.xz', - 'sha256sum': '0bb931bdb9e68573a8ad8298d6ecd50a3cc9d37ba9af492aa386aedab25517e6', - 'size_bytes': 102273988, - 'generation': 1734710925809018, + 'object_name': 'Mac_arm64/rust-toolchain-ad211ced81509462cdfe4c29ed10f97279a0acae-1-llvmorg-20-init-17108-g29ed6000.tar.xz', + 'sha256sum': '879947f21091c62096297c34c3e0a3f2e1f79260fb9b3c3c40091d62c65fb04e', + 'size_bytes': 102626588, + 'generation': 1736456750286270, 'condition': 'host_os == "mac" and host_cpu == "arm64"', }, { - 'object_name': 'Win/rust-toolchain-8a1f8039a7ded79d3d4fe97b110016d89f2b11e2-1-llvmorg-20-init-16062-g091448e3.tar.xz', - 'sha256sum': 'd709f967e0dcfa8aaba98b98111145e6f1e0b41aa0816c6e46144176b0c7d645', - 'size_bytes': 176629828, - 'generation': 1734710927011110, + 'object_name': 'Win/rust-toolchain-ad211ced81509462cdfe4c29ed10f97279a0acae-1-llvmorg-20-init-17108-g29ed6000.tar.xz', + 'sha256sum': '294a0a338bc46626b38d0d243f6f9a308dc2517cbf8961e2dc0edbf51b8d0ae9', + 'size_bytes': 176895424, + 'generation': 1736456752082017, 'condition': 'host_os == "win"', }, ], @@ -1439,7 +1439,7 @@ 'src/clank': { 'url': Var('chrome_git') + '/clank/internal/apps.git' + '@' + - '478b2e4fe2110836384d18ecacc2f5e95fe9a788', + 'c78bc64124bbc9103a59307e508591bf82cf7eb4', 'condition': 'checkout_android and checkout_src_internal', }, @@ -2436,7 +2436,7 @@ Var('pdfium_git') + '/pdfium.git' + '@' + Var('pdfium_revision'), 'src/third_party/perfetto': - Var('android_git') + '/platform/external/perfetto.git' + '@' + '3cb4734421a917fd662ba881bc94a620726ea603', + Var('android_git') + '/platform/external/perfetto.git' + '@' + 'a49395d104cee4a11408de2a0b8cde127ba67b5f', 'src/base/tracing/test/data': { 'bucket': 'perfetto', @@ -2618,7 +2618,7 @@ 'packages': [ { 'package': 'chromium/third_party/r8', - 'version': 'pTuwP6kf9nJ3wT_GS6XQy5z5xjF3Cb5JDfVapSCBRvcC', + 'version': 'Svnec92rP2SGDEMI8UVD0AmkIf9jmUxTleJt8OS82t0C', }, ], 'condition': 'checkout_android and non_git_source', @@ -2806,7 +2806,7 @@ Var('chromium_git') + '/webpagereplay.git' + '@' + Var('webpagereplay_revision'), 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + '2849146823f9d05c667814914cdcdd53781d7252', + Var('webrtc_git') + '/src.git' + '@' + 'cdd2922312848149a9954e3e7f7c327a9010afda', # Wuffs' canonical repository is at github.com/google/wuffs, but we use # Skia's mirror of Wuffs, the same as in upstream Skia's DEPS file. @@ -2869,7 +2869,7 @@ 'packages': [ { 'package': 'skia/tools/goldctl/windows-amd64', - 'version': 'lUGH7_HceKY7ywhy0vKwG_HMa8T01IwbU3qADAtu7bwC', + 'version': 'skMt2xgfOuITCmlSoLbBGHtrtM3geW4ejGVKFtFxTvsC', }, ], 'dep_type': 'cipd', @@ -2932,7 +2932,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/boca_app/app', - 'version': 'Ty9uMNiw-SVUfR8Ib5fdNgSdFaQXxdUmMcr0VfM2FoMC', + 'version': 'YC4dgSYat6PKt8GbLN03fAsr7U_QVLqKphFeoJQMitQC', }, ], 'condition': 'checkout_chromeos and checkout_src_internal', @@ -2987,7 +2987,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/projector_app/app', - 'version': 'CGrahUWQ0dcrVe4kCGbMBkxeylR_8zJguLhiDj-4tUQC', + 'version': '1Wm90lTOedwidv20UgmC9eDt8AE0kddREgiRFg9xGlsC', }, ], 'condition': 'checkout_chromeos and checkout_src_internal', @@ -4634,7 +4634,7 @@ 'src/ios_internal': { 'url': Var('chrome_git') + '/chrome/ios_internal.git' + '@' + - 'c2cac502a019ec8772db7b7aa574975c1ce78368', + 'ae4eac69b182afea8eeb44148e709b4338bbb276', 'condition': 'checkout_ios and checkout_src_internal', },
diff --git a/android_webview/browser/aw_settings.cc b/android_webview/browser/aw_settings.cc index 776c1de..d3435c3 100644 --- a/android_webview/browser/aw_settings.cc +++ b/android_webview/browser/aw_settings.cc
@@ -359,6 +359,11 @@ update_prefs = true; } + if (!prefs->uses_platform_autofill) { + prefs->uses_platform_autofill = true; + update_prefs = true; + } + if (update_prefs) web_contents()->SyncRendererPrefs();
diff --git a/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java b/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java index a58e976f..1d699f0 100644 --- a/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java +++ b/android_webview/java/src/org/chromium/android_webview/common/ProductionSupportedFlagList.java
@@ -301,6 +301,10 @@ AutofillFeatures.AUTOFILL_SUPPORT_LAST_NAME_PREFIX, "When enabled, Autofill uses a custom name hierarchy for parsing last names."), Flag.baseFeature( + AutofillFeatures.AUTOFILL_USE_NEGATIVE_PATTERN_FOR_ALL_ATTRIBUTES, + "When enabled, parser won't try to match other attributes if any of the negative" + + " patterns matched."), + Flag.baseFeature( AutofillFeatures.AUTOFILL_USE_SUBMITTED_FORM_IN_HTML_SUBMISSION, "When enabled, Autofill will start falling back to the saved form when HTML" + " submission happens and form extraction fails."),
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/WebExposedTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/WebExposedTest.java index 8b0312d..5ade635 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/WebExposedTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/WebExposedTest.java
@@ -16,7 +16,6 @@ import difflib.Patch; import org.junit.Assert; -import org.junit.Assume; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -32,8 +31,8 @@ import org.chromium.base.ThreadUtils; import org.chromium.base.test.util.Batch; import org.chromium.base.test.util.CommandLineFlags; +import org.chromium.base.test.util.Restriction; import org.chromium.base.test.util.UrlUtils; -import org.chromium.build.BuildConfig; import java.io.File; import java.io.FileOutputStream; @@ -80,14 +79,6 @@ private final SettableFuture<String> mResultFuture = SettableFuture.create(); public WebExposedTest(AwSettingsMutation param) { - // This assumption check is in the constructor as it needs to run before any native code. - // - // TODO(crbug.com/381090604): This assumption check can't tell whether we're going to run a - // stable or unstable test. We should ideally still run the stable tests for branded builds. - Assume.assumeFalse( - "Chrome branded builds do not support field trial configs", - BuildConfig.IS_CHROME_BRANDED); - mRule = new AwActivityTestRule(param.getMutation()); boolean rebaseline; try { @@ -170,6 +161,8 @@ "enable-experimental-web-platform-features", "enable-blink-test-features", }) + // Chrome branded builds don't contain fieldtrial configs. + @Restriction(Restriction.RESTRICTION_TYPE_NON_CHROME_BRANDED) public void testGlobalInterfaceListingUnstable() throws Exception { doTestGlobalInterfaceListing(""); }
diff --git a/android_webview/renderer/aw_render_frame_ext.cc b/android_webview/renderer/aw_render_frame_ext.cc index c94f7a1..e9ce899 100644 --- a/android_webview/renderer/aw_render_frame_ext.cc +++ b/android_webview/renderer/aw_render_frame_ext.cc
@@ -159,12 +159,8 @@ auto password_autofill_agent = std::make_unique<autofill::PasswordAutofillAgent>(render_frame, ®istry_); - new AutofillAgent( - render_frame, - {ExtractAllDatalists(true), FocusRequiresScroll(false), - QueryPasswordSuggestions(true), SecureContextRequired(true), - UserGestureRequired(false), UsesKeyboardAccessoryForSuggestions(false)}, - std::move(password_autofill_agent), nullptr, ®istry_); + new AutofillAgent(render_frame, std::move(password_autofill_agent), nullptr, + ®istry_); if (content_capture::features::IsContentCaptureEnabled()) new content_capture::ContentCaptureSender(render_frame, ®istry_);
diff --git a/ash/birch/birch_coral_item.cc b/ash/birch/birch_coral_item.cc index f7ba51a..8ca5de6 100644 --- a/ash/birch/birch_coral_item.cc +++ b/ash/birch/birch_coral_item.cc
@@ -125,14 +125,8 @@ birch_coral_provider->ExtractGroupById(group_id_); Shell::Get()->coral_delegate()->LaunchPostLoginGroup(std::move(group)); BirchCoralProvider::Get()->OnPostLoginClusterRestored(); - base::UmaHistogramEnumeration("Ash.Birch.Coral.Action", ActionType::kRestore); - - // Set the current active desk is modified by Coral. - auto* desks_controller = DesksController::Get(); - desks_controller->GetDeskAtIndex(desks_controller->GetActiveDeskIndex()) - ->set_modified_by_coral(true); // End the Overview after restore. // TODO(zxdan|sammie): Consider the restoring failed cases. OverviewController::Get()->EndOverview(OverviewEndAction::kCoral,
diff --git a/ash/birch/birch_coral_item.h b/ash/birch/birch_coral_item.h index cc18660..e475c4e 100644 --- a/ash/birch/birch_coral_item.h +++ b/ash/birch/birch_coral_item.h
@@ -44,7 +44,6 @@ // The callback function for the press on the given `birch_chip_button`. void LaunchGroup(BirchChipButtonBase* birch_chip_button); - CoralSource source() const { return source_; } const base::Token& group_id() const { return group_id_; } // BirchItem:
diff --git a/ash/birch/birch_coral_provider.cc b/ash/birch/birch_coral_provider.cc index 3747d6d..9fc4934 100644 --- a/ash/birch/birch_coral_provider.cc +++ b/ash/birch/birch_coral_provider.cc
@@ -214,19 +214,18 @@ return entities; } -// Checks if we should show the in-session response on Glanceables bar. -bool ShouldShowInSessionResponse(CoralResponse* response) { +// Checks if we should show the response on Glanceables bar. +bool ShouldShowResponse(CoralResponse* response) { if (!response) { return false; } - CHECK_EQ(response->source(), CoralSource::kInSession); - // If we got only one group from an in-session response whose name and content // are exactly same as the active desk which was created from a coral group, // we won't show it. const auto& groups = response->groups(); - if (!DesksController::Get()->active_desk()->modified_by_coral() || + if (response->source() == CoralSource::kPostLogin || + DesksController::Get()->active_desk()->type() != Desk::Type::kCoral || groups.size() != 1) { return true; } @@ -446,14 +445,8 @@ fake_response_copy->set_source(CoralSource::kPostLogin); break; } - fake_response_copy->set_groups(std::move(groups)); - - if (fake_response_copy->source() == CoralSource::kPostLogin) { - HandlePostLoginCoralResponse(std::move(fake_response_copy)); - } else { - HandleInSessionCoralResponse(std::move(fake_response_copy)); - } + HandleCoralResponse(std::move(fake_response_copy)); return; } @@ -646,9 +639,8 @@ void BirchCoralProvider::HandlePostLoginCoralResponse( std::unique_ptr<CoralResponse> response) { // If response_ is not null, it may be a previously arrived post-login or - // in-session response. Handle the existing `response_` in this case. + // in-session response. Skip handling the newly arrived response in this case. if (response_) { - HandleCoralResponse(std::move(response_)); return; } @@ -659,11 +651,9 @@ void BirchCoralProvider::HandleInSessionCoralResponse( std::unique_ptr<CoralResponse> response) { - // Still show current restore groups if there is no valid in-session group to - // show. - if (!ShouldShowInSessionResponse(response.get())) { - HandleCoralResponse(HasValidPostLoginResponse() ? std::move(response_) - : nullptr); + const bool non_empty = response && response->groups().size(); + if (HasValidPostLoginResponse() && !non_empty) { + HandleCoralResponse(std::move(response_)); return; } @@ -676,7 +666,7 @@ std::unique_ptr<CoralResponse> response) { std::vector<BirchCoralItem> items; response_ = std::move(response); - if (!response_) { + if (!ShouldShowResponse(response_.get())) { windows_observation_.RemoveAllObservations(); Shell::Get()->birch_model()->SetCoralItems(items); return;
diff --git a/ash/strings/ash_strings_as.xtb b/ash/strings/ash_strings_as.xtb index 29292c6..e6d4c62 100644 --- a/ash/strings/ash_strings_as.xtb +++ b/ash/strings/ash_strings_as.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">আপোনাৰ ফ’নৰ শেহতীয়া ফট’, মিডিয়া, জাননী আৰু এপ্সমূহ চোৱাৰ সুবিধা ছেট আপ কৰাটো বাতিল কৰক</translation> <translation id="4491109536499578614">প্ৰতিচ্ছবি</translation> <translation id="450584155212756404">বিকাশকৰ্তাৰ চেনেল</translation> +<translation id="4513044611477939680">Quick Share</translation> <translation id="4513946894732546136">মতামত</translation> <translation id="4518404433291145981">আপোনাৰ Chromebook আনলক কৰিবলৈ, প্ৰথমে আপোনাৰ ফ’নটো আনলক কৰক</translation> <translation id="4527045527269911712">ব্লুটুথ ডিভাইচ "<ph name="DEVICE_NAME" />"এ পেয়াৰ কৰিবলৈ অনুমতি বিচাৰে।</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">বেটাৰী সঞ্চয়কাৰী অন কৰা হৈছে</translation> <translation id="4673427585974421255">অন কৰি ৰাখক</translation> <translation id="4677040906536311086">Google Sheet</translation> +<translation id="468019262817532242">আপোনাৰ সৈতে কোনেও শ্বেয়াৰ কৰিব নোৱাৰে</translation> <translation id="468293128311738995">আপোনাৰ ফ’ন থকা এপ্</translation> <translation id="4690510401873698237">শ্বেল্ফ একেবাৰে তলিত আছে</translation> <translation id="4696813013609194136">অভিভাৱকৰ এক্সেছ ক'ডৰ সহায়ত ডিভাইচ আনলক কৰক</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" />ৰ পাছৱর্ড</translation> <translation id="4777825441726637019">Play Store</translation> <translation id="4778095205580009397">Google Assistant ডেম’ ছেশ্বনত উপলব্ধ নহয়।</translation> +<translation id="4785412405516449976">কেৱল Google একাউণ্ট থকা আপোনাৰ সম্পৰ্ক</translation> <translation id="4789348252524569426">কথনৰ ফাইল ইনষ্টল কৰিব নোৱাৰি। আপোনাৰ ডিভাইচটো আপডে’ট কৰাৰ প্ৰয়োজন। আপোনাৰ ডিভাইচটো ৰিষ্টাৰ্ট কৰক আৰু পুনৰ চেষ্টা কৰক।</translation> <translation id="478959186716341421">কাষ্টিং</translation> <translation id="4798403412327076414">আপুনি পৰৱৰ্তী সময়ত ছাইন ইন কৰিলে পূৰ্বে খুলি থোৱা ৱিণ্ড আৰু এপ্সমূহ দেখা পাব</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">আংশিক স্ক্ৰীন ৰেকৰ্ড কৰক</translation> <translation id="5187627942836026988">হ’টস্প’টৰ সবিশেষ দেখুৱাওক। আপোনাৰ প্ৰশাসকে হ’টস্প’ট অৱৰোধ কৰিছে।</translation> <translation id="5197255632782567636">ইন্টাৰনেট</translation> +<translation id="5198039720391525849">বিশেষভাৱে প্ৰদৰ্শিত GIFs</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> টা অনুষ্ঠান</translation> <translation id="5198715732953550718">নতুন ফ’ল্ডাৰ সৃষ্টি কৰিবলৈ <ph name="MOVED_APP_NAME" />ক <ph name="IN_PLACE_APP" />ৰ সৈতে একত্ৰিত কৰা হৈছে।</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">বৰ্তমানৰ পৃষ্ঠাখন পুনৰ ল’ড কৰক</translation> <translation id="6200515304866777730">এপ্টোৰ দ্বাৰা সমৰ্থিত নহয়</translation> <translation id="6210042900243040400">আগতে <ph name="EMAIL" />ত ছেভ হৈ থকা <ph name="NAME" /> সংযোগ কৰক</translation> +<translation id="6212580734499190393">১০ মিনিটৰ বাবে</translation> <translation id="6213808132343683860">আংশিক স্ক্ৰীনশ্বট লওক অথবা স্ক্ৰীন ৰেকৰ্ডিং কৰক</translation> <translation id="621606890568890214">Google Classroom বিস্তাৰ কৰক</translation> <translation id="6216759484154215561">ব্ৰাউজাৰত অধিক জানক লিংকটো খোলা হৈছে</translation> @@ -1953,6 +1958,7 @@ <translation id="7599378375976398913">বাছনি কৰা ফলাফল ভৰাই থকা হৈছে</translation> <translation id="7600875258240007829">সকলো জাননী চাওক</translation> <translation id="7601417191446344542">মিউট নাজ সুবিধাটো অন কৰিবনে?</translation> +<translation id="7602187221150705972">ইম’জি, GIFs আৰু অধিক সন্ধান কৰক</translation> <translation id="7607002721634913082">পজ হৈ আছে</translation> <translation id="7609951632080598826">কেলেণ্ডাৰ ভিউ, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">কেমেৰা পুনৰ সংযুক্ত হৈছে।</translation> @@ -2049,6 +2055,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">ফ’কাছ কৰাৰ সময়ত <ph name="TIME" /> পৰ্যন্ত জাননীসমূহ মিউট কৰা হয়</translation> +<translation id="7901010467630324625">কেৱল <ph name="EMAIL" />ত ছাইন ইন কৰি থোৱা ডিভাইচসমূহ</translation> <translation id="7901190436359881020">ৱিণ্ড’সমূহ সলনাসলনি কৰক</translation> <translation id="7901405293566323524">ফ’ন হাব</translation> <translation id="7902625623987030061">ফিংগাৰপ্ৰিণ্ট ছেন্সৰটো স্পৰ্শ কৰক</translation>
diff --git a/ash/strings/ash_strings_az.xtb b/ash/strings/ash_strings_az.xtb index 7415493..b633358 100644 --- a/ash/strings/ash_strings_az.xtb +++ b/ash/strings/ash_strings_az.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">Telefonun son foto, media, bildiriş və tətbiqlərinə baxmağı ayarlamaqdan imtina edin</translation> <translation id="4491109536499578614">Şəkil</translation> <translation id="450584155212756404">Gəlişim Kanalı</translation> +<translation id="4513044611477939680">Cəld Paylaşım</translation> <translation id="4513946894732546136">Geri əlaqə</translation> <translation id="4518404433291145981">Chromebook'u kiliddən çıxarmaq üçün əvvəlcə telefonunuzu kiliddən çıxarın</translation> <translation id="4527045527269911712">"<ph name="DEVICE_NAME" />" cihazı cütlənmək üçün icazə istəyir.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">Enerjiyə Qənaət aktivdir</translation> <translation id="4673427585974421255">Aktiv saxlayın</translation> <translation id="4677040906536311086">Google Cədvəl</translation> +<translation id="468019262817532242">Heç kəs sizinlə paylaşa bilməz</translation> <translation id="468293128311738995">Telefonunuzdan tətbiqlər</translation> <translation id="4690510401873698237">Rəf aşağıdadır</translation> <translation id="4696813013609194136">Cihazı valideyn kodu ilə kiliddən çıxarın</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" /> üçün parol</translation> <translation id="4777825441726637019">Play Market</translation> <translation id="4778095205580009397">Google Assistent demo sessiyasında əlçatan deyil.</translation> +<translation id="4785412405516449976">Yalnız Google Hesabı olan kontaktlarınız</translation> <translation id="4789348252524569426">Nitq fayllarını quraşdırmaq olmur. Cihazınız güncəllənməlidir. Cihazı yenidən başladıb təkrar cəhd edin.</translation> <translation id="478959186716341421">Yayım</translation> <translation id="4798403412327076414">Növbəti dəfə daxil olduqda daha əvvəl açılmış pəncərə və tətbiqləri görəcəksiniz</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">Ekranın bir hissəsini çəkin</translation> <translation id="5187627942836026988">Hotspot detallarını göstərin. Administrator hotspotu bloklayıb.</translation> <translation id="5197255632782567636">internet</translation> +<translation id="5198039720391525849">Xüsusi GIF-lər</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> tədbir</translation> <translation id="5198715732953550718">Yeni qovluq yaratmaq üçün <ph name="MOVED_APP_NAME" /> <ph name="IN_PLACE_APP" /> ilə birləşdirilib.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">Cari səhifəni yenidən yükləyin</translation> <translation id="6200515304866777730">Tətbiq tərəfindən dəstəklənmir</translation> <translation id="6210042900243040400">Daha əvvəl <ph name="EMAIL" /> hesabında saxlanmış <ph name="NAME" /> cihazını qoşun</translation> +<translation id="6212580734499190393">10 dəqiqəlik</translation> <translation id="6213808132343683860">Qismən skrinşot və ya ekran yazısı çəkin</translation> <translation id="621606890568890214">Google Classroom-u genişləndirin</translation> <translation id="6216759484154215561">Brauzerdə ətraflı məlumat linki açıldı</translation> @@ -1953,6 +1958,7 @@ <translation id="7599378375976398913">Seçilmiş nəticə daxil edilir</translation> <translation id="7600875258240007829">Bütün bildirişlərə baxın</translation> <translation id="7601417191446344542">Qapalı mikrofon xəbərdarlığının susdurulması aktiv edilsin?</translation> +<translation id="7602187221150705972">Emojilər, GIF-lər və s. axtarın</translation> <translation id="7607002721634913082">Durduruldu</translation> <translation id="7609951632080598826">Təqvim baxışı, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">Kamera yenidən qoşuldu.</translation> @@ -2049,6 +2055,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Fokus zamanı bildirişlər <ph name="TIME" /> radələrinə qədər səssiz edilir</translation> +<translation id="7901010467630324625">Yalnız <ph name="EMAIL" /> e-poçtuna daxil olmuş cihazlar</translation> <translation id="7901190436359881020">Pəncərələri dəyişin</translation> <translation id="7901405293566323524">Telefon Habı</translation> <translation id="7902625623987030061">Barmaq izi sensoruna toxunun</translation>
diff --git a/ash/strings/ash_strings_bg.xtb b/ash/strings/ash_strings_bg.xtb index f06f7317..e250e11 100644 --- a/ash/strings/ash_strings_bg.xtb +++ b/ash/strings/ash_strings_bg.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">Отхвърляне на настройването на прегледа на скорошните снимки, мултимедийни файлове, известия и приложения на телефона ви</translation> <translation id="4491109536499578614">Изображение</translation> <translation id="450584155212756404">Канал за програмисти</translation> +<translation id="4513044611477939680">Бързо споделяне</translation> <translation id="4513946894732546136">Отзиви</translation> <translation id="4518404433291145981">За да отключите своя Chromebook, първо отключете телефона си</translation> <translation id="4527045527269911712">Устройството с Bluetooth „<ph name="DEVICE_NAME" />“ иска разрешение за сдвояване.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">Режимът за запазване на батерията е включен</translation> <translation id="4673427585974421255">Не</translation> <translation id="4677040906536311086">Таблица в Google Таблици</translation> +<translation id="468019262817532242">Никой не може да споделя с вас</translation> <translation id="468293128311738995">Приложения от телефона ви</translation> <translation id="4690510401873698237">Лавицата е най-долу</translation> <translation id="4696813013609194136">Отключване на устройството с код на родител</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016">Парола за <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="4777825441726637019">Google Play Магазин</translation> <translation id="4778095205580009397">Google Асистент не е налице по време на демонстрационна сесия.</translation> +<translation id="4785412405516449976">Само контактите ви с профил в Google</translation> <translation id="4789348252524569426">Инсталирането на файловете с говора не е възможно. Устройството ви трябва да бъде актуализирано. Рестартирайте го и опитайте отново.</translation> <translation id="478959186716341421">Предава се</translation> <translation id="4798403412327076414">При следващото влизане в профила си ще видите отворените по-рано прозорци и приложения</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">Записване на част от екрана</translation> <translation id="5187627942836026988">Показване на подробностите за точката за достъп. Тя е блокирана от администратора ви.</translation> <translation id="5197255632782567636">Интернет</translation> +<translation id="5198039720391525849">Представени GIF файлове</translation> <translation id="5198413532174090167"><ph name="NUMBER" /> събития на <ph name="DATE" /></translation> <translation id="5198715732953550718">Приложението <ph name="MOVED_APP_NAME" /> бе комбинирано със <ph name="IN_PLACE_APP" /> и бе създадена нова папка.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">Презареждане на текущата страница</translation> <translation id="6200515304866777730">Не се поддържа от приложението</translation> <translation id="6210042900243040400">Свържете устройството <ph name="NAME" />, запазено преди това в(ъв) <ph name="EMAIL" /></translation> +<translation id="6212580734499190393">За 10 мин</translation> <translation id="6213808132343683860">Създаване на частична екранна снимка или записване на част от екрана</translation> <translation id="621606890568890214">Разгъване на Google Classroom</translation> <translation id="6216759484154215561">Връзката „Научете повече“ бе отворена в браузъра</translation> @@ -1953,6 +1958,7 @@ <translation id="7599378375976398913">Избраният резултат се вмъква</translation> <translation id="7600875258240007829">Преглед на всички известия</translation> <translation id="7601417191446344542">Да се включи ли подсещането при спрян звук?</translation> +<translation id="7602187221150705972">Търсете емоджи, GIF файлове и др.</translation> <translation id="7607002721634913082">На пауза</translation> <translation id="7609951632080598826">Изглед на календара – <ph name="TIME" />, <ph name="DATE" /></translation> <translation id="7611213136657090146">Връзката с камерата е възстановена.</translation> @@ -2049,6 +2055,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Известията са спрени до <ph name="TIME" />, докато режимът за концентрация е включен</translation> +<translation id="7901010467630324625">Само устройства, с които сте влезли в(ъв) <ph name="EMAIL" /></translation> <translation id="7901190436359881020">Размяна на прозорците</translation> <translation id="7901405293566323524">Център за телефоните</translation> <translation id="7902625623987030061">Докоснете сензора за отпечатъци</translation>
diff --git a/ash/strings/ash_strings_bn.xtb b/ash/strings/ash_strings_bn.xtb index cdf940b..d54f7ad 100644 --- a/ash/strings/ash_strings_bn.xtb +++ b/ash/strings/ash_strings_bn.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">আপনার ফোনের সাম্প্রতিক ফটো, মিডিয়া ও বিজ্ঞপ্তি দেখা সংক্রান্ত সেট-আপের পদ্ধতি বাতিল করুন</translation> <translation id="4491109536499578614">ছবি</translation> <translation id="450584155212756404">ডেভ চ্যানেল</translation> +<translation id="4513044611477939680">কুইক শেয়ার</translation> <translation id="4513946894732546136">প্রতিক্রিয়া</translation> <translation id="4518404433291145981">Chromebook আনলক করতে, প্রথমে আপনার ফোন আনলক করুন</translation> <translation id="4527045527269911712">ব্লুটুথ ডিভাইস "<ph name="DEVICE_NAME" />" যুক্ত করার অনুমতি চাইছে।</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">'ব্যাটারি সেভার' ফিচার চালু করা হয়েছে</translation> <translation id="4673427585974421255">চালু রাখুন</translation> <translation id="4677040906536311086">Google Sheet</translation> +<translation id="468019262817532242">কেউ আপনার সাথে শেয়ার করতে পারবেন না</translation> <translation id="468293128311738995">আপনার ফোন থেকে অ্যাপ</translation> <translation id="4690510401873698237">শেল্ফ নিচে দেখানো হচ্ছে</translation> <translation id="4696813013609194136">অভিভাবকীয় কোড দিয়ে ডিভাইস আনলক করুন</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" />-এর জন্য পাসওয়ার্ড</translation> <translation id="4777825441726637019">Play Store</translation> <translation id="4778095205580009397">একটি ডেমো সেশনে Google অ্যাসিস্ট্যান্ট উপলভ্য নয়।</translation> +<translation id="4785412405516449976">শুধুমাত্র আপনার যেসব পরিচিতির Google অ্যাকাউন্ট রয়েছে</translation> <translation id="4789348252524569426">স্পিচ ফাইল ইনস্টল করা যাচ্ছে না। আপনার ডিভাইস আপডেট করতে হবে। ডিভাইস রিস্টার্ট করে আবার চেষ্টা করুন।</translation> <translation id="478959186716341421">কাস্ট করা হচ্ছে</translation> <translation id="4798403412327076414">পরবর্তী সময়ে আপনি সাইন-ইন করার সময় আগে, খোলা উইন্ডো ও অ্যাপ দেখতে পাবেন</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">আংশিক স্ক্রিন রেকর্ড করুন</translation> <translation id="5187627942836026988">হটস্পটের বিবরণ দেখুন। আপনার অ্যাডমিনিস্ট্রেটর হটস্পট ব্লক করে রেখেছেন।</translation> <translation id="5197255632782567636">ইন্টারনেট</translation> +<translation id="5198039720391525849">ফিচার করা GIF</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" />টি ইভেন্ট</translation> <translation id="5198715732953550718">নতুন ফোল্ডার তৈরি করতে <ph name="MOVED_APP_NAME" /> অ্যাপ <ph name="IN_PLACE_APP" /> অ্যাপের সঙ্গে যোগ করা হয়েছে।</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">বর্তমান পৃষ্ঠাটি পুনরায় লোড করুন</translation> <translation id="6200515304866777730">অ্যাপে কাজ করে না</translation> <translation id="6210042900243040400">আগে থেকে <ph name="EMAIL" />-এ সেভ করা <ph name="NAME" /> কানেক্ট করুন</translation> +<translation id="6212580734499190393">১০ মিনিটের জন্য</translation> <translation id="6213808132343683860">আংশিক স্ক্রিনশট বা স্ক্রিন রেকর্ডিং নিন</translation> <translation id="621606890568890214">Google Classroom বড় করুন</translation> <translation id="6216759484154215561">ব্রাউজারে আরও জানুন লিঙ্ক খোলা রয়েছে</translation> @@ -1954,6 +1959,7 @@ <translation id="7599378375976398913">বেছে নেওয়া ফলাফল ইনপুট ফিল্ডে যোগ করা হচ্ছে</translation> <translation id="7600875258240007829">সব বিজ্ঞপ্তি দেখুন</translation> <translation id="7601417191446344542">মিউট নাজ চালু করবেন?</translation> +<translation id="7602187221150705972">ইমোজি, GIFs এবং আরও অনেক কিছু সার্চ করুন</translation> <translation id="7607002721634913082">বিরত রয়েছে</translation> <translation id="7609951632080598826">ক্যালেন্ডার ভিউ, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">ক্যামেরা আবার কানেক্ট করা হয়েছে।</translation> @@ -2050,6 +2056,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">ফোকাস মোড চালু হওয়ার জন্য <ph name="TIME" /> পর্যন্ত বিজ্ঞপ্তি মিউট করা আছে</translation> +<translation id="7901010467630324625">শুধুমাত্র <ph name="EMAIL" />-এর মাধ্যমে সাইন-ইন করা ডিভাইস</translation> <translation id="7901190436359881020">উইন্ডো পাল্টান</translation> <translation id="7901405293566323524">ফোন হাব</translation> <translation id="7902625623987030061">আঙুলের ছাপের সেন্সর টাচ করুন</translation>
diff --git a/ash/strings/ash_strings_bs.xtb b/ash/strings/ash_strings_bs.xtb index fdc4b75..5c022d5 100644 --- a/ash/strings/ash_strings_bs.xtb +++ b/ash/strings/ash_strings_bs.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">Odbacivanje postavljanja pregledanja nedavnih fotografija, medijskih fajlova, obavještenja i aplikacija telefona</translation> <translation id="4491109536499578614">Slika</translation> <translation id="450584155212756404">Kanal za programere</translation> +<translation id="4513044611477939680">Quick Share</translation> <translation id="4513946894732546136">Povratne informacije</translation> <translation id="4518404433291145981">Da otključate Chromebook, najprije otključajte telefon</translation> <translation id="4527045527269911712">Bluetooth uređaj "<ph name="DEVICE_NAME" />" traži odobrenje za uparivanje.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">Ušteda baterije je uključena</translation> <translation id="4673427585974421255">Ostavi uključeno</translation> <translation id="4677040906536311086">Google tabela</translation> +<translation id="468019262817532242">Niko ne može dijeliti s vama</translation> <translation id="468293128311738995">Aplikacije s vašeg telefona</translation> <translation id="4690510401873698237">Polica na dnu</translation> <translation id="4696813013609194136">Otključajte uređaj pomoću koda roditelja</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016">Lozinka za račun <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="4777825441726637019">Play trgovina</translation> <translation id="4778095205580009397">Google Asistent nije dostupan u demo sesiji.</translation> +<translation id="4785412405516449976">Samo vaši kontakti s Google računom</translation> <translation id="4789348252524569426">Nije moguće instalirati fajlove za govor. Potrebno je ažurirati uređaj. Ponovo pokrenite uređaj i pokušajte ponovo.</translation> <translation id="478959186716341421">Emitiranje</translation> <translation id="4798403412327076414">Sljedeći put kada se prijavite, vidjet ćete prethodno otvorene prozore i aplikacije</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">Snimanje dijela ekrana</translation> <translation id="5187627942836026988">Pogledajte detalje pristupne tačke. Administrator je blokirao pristupnu tačku.</translation> <translation id="5197255632782567636">Internet</translation> +<translation id="5198039720391525849">Istaknuti GIF-ovi</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> događaj(a)</translation> <translation id="5198715732953550718">Aplikacija <ph name="MOVED_APP_NAME" /> je kombinirana s aplikacijom <ph name="IN_PLACE_APP" /> za kreiranje novog foldera.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">Ponovno učitaj trenutačnu stranicu</translation> <translation id="6200515304866777730">Aplikacija ne podržava</translation> <translation id="6210042900243040400">Povežite se na uređaj <ph name="NAME" /> prethodno sačuvan na račun <ph name="EMAIL" /></translation> +<translation id="6212580734499190393">10 min</translation> <translation id="6213808132343683860">Napravite djelimičan snimak ili videozapis ekrana</translation> <translation id="621606890568890214">Proširivanje Google Učionice</translation> <translation id="6216759484154215561">Otvaranje linka za više informacija u pregledniku</translation> @@ -1953,6 +1958,7 @@ <translation id="7599378375976398913">Umetanje odabranog rezultata</translation> <translation id="7600875258240007829">Prikaži sva obavještenja</translation> <translation id="7601417191446344542">Uključiti podsjećanje na isključeni mikrofon?</translation> +<translation id="7602187221150705972">Pretražite emodžije, GIF-ove i drugo</translation> <translation id="7607002721634913082">Pauzirano</translation> <translation id="7609951632080598826">Prikaz kalendara, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">Kamera je ponovo povezana.</translation> @@ -2049,6 +2055,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Obavještenja su isključena do <ph name="TIME" /> tokom fokusiranja</translation> +<translation id="7901010467630324625">Samo uređaji na kojima ste prijavljeni na <ph name="EMAIL" /></translation> <translation id="7901190436359881020">Zamjena prozora</translation> <translation id="7901405293566323524">Hub telefona</translation> <translation id="7902625623987030061">Dodirnite senzor za otisak prsta</translation>
diff --git a/ash/strings/ash_strings_cy.xtb b/ash/strings/ash_strings_cy.xtb index 053d1ae..3045c99 100644 --- a/ash/strings/ash_strings_cy.xtb +++ b/ash/strings/ash_strings_cy.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">Diystyru gosod gweld lluniau, cyfryngau, hysbysiadau ac apiau diweddar eich ffôn</translation> <translation id="4491109536499578614">Llun</translation> <translation id="450584155212756404">Sianel Datblygwr</translation> +<translation id="4513044611477939680">Rhannu Cyflym</translation> <translation id="4513946894732546136">Adborth</translation> <translation id="4518404433291145981">I ddatgloi eich Chromebook, datglowch eich ffôn yn gyntaf</translation> <translation id="4527045527269911712">Hoffai'r ddyfais Bluetooth "<ph name="DEVICE_NAME" />" gael caniatâd i baru.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">Mae'r modd Arbed Batri wedi'i droi ymlaen</translation> <translation id="4673427585974421255">Cadw ymlaen</translation> <translation id="4677040906536311086">Dalen Google</translation> +<translation id="468019262817532242">Ni all unrhyw un rannu â chi</translation> <translation id="468293128311738995">Apiau o'ch ffôn</translation> <translation id="4690510401873698237">Silff ar y gwaelod</translation> <translation id="4696813013609194136">Datgloi'r ddyfais gyda chod rhiant</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016">Cyfrinair ar gyfer <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="4777825441726637019">Play Store</translation> <translation id="4778095205580009397">Nid yw Google Assistant ar gael mewn sesiwn ddemo.</translation> +<translation id="4785412405516449976">Dim ond eich cysylltiadau sydd â Chyfrif Google</translation> <translation id="4789348252524569426">Methu â gosod ffeiliau llais. Mae angen diweddaru eich dyfais. Ailgychwynnwch eich dyfais a rhowch gynnig arall arni.</translation> <translation id="478959186716341421">Castio</translation> <translation id="4798403412327076414">Byddwch yn gweld ffenestri ac apiau a agorwyd yn flaenorol y tro nesaf y byddwch yn mewngofnodi</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">Recordio sgrîn rannol</translation> <translation id="5187627942836026988">Dangos manylion y boethfan. Ma'r boethfan yn cael ei rhwystro gan eich gweinyddwr.</translation> <translation id="5197255632782567636">Rhyngrwyd</translation> +<translation id="5198039720391525849">GIFs dan sylw</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> o ddigwyddiadau</translation> <translation id="5198715732953550718">Mae <ph name="MOVED_APP_NAME" /> wedi'i gyfuno â <ph name="IN_PLACE_APP" /> i greu ffolder newydd.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">Ail-lwytho'r dudalen bresennol</translation> <translation id="6200515304866777730">Ni chefnogir hyn gan yr ap</translation> <translation id="6210042900243040400">Cysylltu <ph name="NAME" /> a gadwyd yn flaenorol i <ph name="EMAIL" /></translation> +<translation id="6212580734499190393">Am 10 mun</translation> <translation id="6213808132343683860">Tynnu sgrinlun neu gwneud recordiad sgrîn rhannol</translation> <translation id="621606890568890214">Ehangu Google Classroom</translation> <translation id="6216759484154215561">Wedi agor y ddolen dysgu rhagor yn y porwr</translation> @@ -1953,6 +1958,7 @@ <translation id="7599378375976398913">Wrthi'n mewnosod y canlyniad a ddewiswyd</translation> <translation id="7600875258240007829">Gweld pob hysbysiad</translation> <translation id="7601417191446344542">Troi ysgogiad distewi ymlaen?</translation> +<translation id="7602187221150705972">Chwilio emojis, GIFs a rhagor</translation> <translation id="7607002721634913082">Wedi seibio</translation> <translation id="7609951632080598826">Gwedd calendr, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">Mae'r camera wedi'i ailgysylltu.</translation> @@ -2049,6 +2055,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Mae hysbysiadau'n cael eu distewi tan <ph name="TIME" /> tra'n ffocysu</translation> +<translation id="7901010467630324625">Dyfeisiau sydd wedi'u mewngofnodi i <ph name="EMAIL" /> yn unig</translation> <translation id="7901190436359881020">Cyfnewid y ffenestri</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Cyffyrddwch â'r synhwyrydd olion bysedd</translation>
diff --git a/ash/strings/ash_strings_da.xtb b/ash/strings/ash_strings_da.xtb index c9724cf8..9ac71c5 100644 --- a/ash/strings/ash_strings_da.xtb +++ b/ash/strings/ash_strings_da.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">Afvis konfiguration af visning af din telefons seneste billeder, medier, notifikationer og apps</translation> <translation id="4491109536499578614">Billede</translation> <translation id="450584155212756404">Udviklerkanal</translation> +<translation id="4513044611477939680">Quick Share</translation> <translation id="4513946894732546136">Feedback</translation> <translation id="4518404433291145981">Hvis du vil låse din Chromebook op, skal du først låse din telefon op</translation> <translation id="4527045527269911712">Bluetooth-enheden "<ph name="DEVICE_NAME" />" vil gerne have parringstilladelse.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">Batterisparefunktion er aktiveret</translation> <translation id="4673427585974421255">Deaktiver ikke</translation> <translation id="4677040906536311086">Google-regneark</translation> +<translation id="468019262817532242">Ingen kan dele indhold med dig</translation> <translation id="468293128311738995">Apps fra din telefon</translation> <translation id="4690510401873698237">Hylden er i bunden</translation> <translation id="4696813013609194136">Lås enheden op med forældrekode</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016">Adgangskode for <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="4777825441726637019">Play Butik</translation> <translation id="4778095205580009397">Google Assistent er ikke tilgængelig i en demosession.</translation> +<translation id="4785412405516449976">Kun kontakter med en Google-konto</translation> <translation id="4789348252524569426">Talefilerne kan ikke installeres Din enhed skal opdateres. Genstart din enhed, og prøv igen.</translation> <translation id="478959186716341421">Caster</translation> <translation id="4798403412327076414">Du kan se tidligere åbnede vinduer og apps, næste gang du logger ind</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">Optag dele af skærmen</translation> <translation id="5187627942836026988">Vis oplysninger om hotspot. Hotspot er blokeret af din administrator.</translation> <translation id="5197255632782567636">Internet</translation> +<translation id="5198039720391525849">Udvalgte giffer</translation> <translation id="5198413532174090167"><ph name="DATE" /> – <ph name="NUMBER" /> begivenheder</translation> <translation id="5198715732953550718">En ny mappe blev oprettet ved at slå <ph name="MOVED_APP_NAME" /> og <ph name="IN_PLACE_APP" /> sammen.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">Genindlæs den aktuelle side</translation> <translation id="6200515304866777730">Understøttes ikke af appen</translation> <translation id="6210042900243040400">Opret forbindelse til <ph name="NAME" />, der tidligere blev gemt på <ph name="EMAIL" /></translation> +<translation id="6212580734499190393">I 10 min.</translation> <translation id="6213808132343683860">Tag et delvist screenshot, eller lav en skærmoptagelse</translation> <translation id="621606890568890214">Udvid Google Classroom</translation> <translation id="6216759484154215561">Linket Få flere oplysninger er åbnet i browseren</translation> @@ -1953,6 +1958,7 @@ <translation id="7599378375976398913">Det valgte resultat indsættes</translation> <translation id="7600875258240007829">Se alle notifikationer</translation> <translation id="7601417191446344542">Vil du aktivere påmindelse om at mikrofonen er slået fra?</translation> +<translation id="7602187221150705972">Søg efter emojis, giffer m.m.</translation> <translation id="7607002721634913082">Sat på pause</translation> <translation id="7609951632080598826">Kalendervisning, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">Der blev oprettet forbindelse til kameraet igen.</translation> @@ -2049,6 +2055,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Notifikationer ignoreres indtil <ph name="TIME" />, mens du fokuserer på din opgave</translation> +<translation id="7901010467630324625">Kun enheder, der er logget ind på <ph name="EMAIL" /></translation> <translation id="7901190436359881020">Byt vinduerne</translation> <translation id="7901405293566323524">Telefonstyring</translation> <translation id="7902625623987030061">Sæt finger på fingeraftrykslæser</translation>
diff --git a/ash/strings/ash_strings_el.xtb b/ash/strings/ash_strings_el.xtb index 5756431..b83eaca 100644 --- a/ash/strings/ash_strings_el.xtb +++ b/ash/strings/ash_strings_el.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">Παράβλεψη ρύθμισης προβολής των πρόσφατων φωτογραφιών, μέσων, ειδοποιήσεων και εφαρμογών του τηλεφώνου σας</translation> <translation id="4491109536499578614">Εικόνα</translation> <translation id="450584155212756404">Κανάλι προγραμματιστών</translation> +<translation id="4513044611477939680">Quick Share</translation> <translation id="4513946894732546136">Σχόλια</translation> <translation id="4518404433291145981">Για να ξεκλειδώσετε το Chromebook, ξεκλειδώστε πρώτα το τηλέφωνό σας</translation> <translation id="4527045527269911712">Η συσκευή Bluetooth "<ph name="DEVICE_NAME" />" ζητά δικαιώματα σύζευξης.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">Η Εξοικονόμηση μπαταρίας ενεργοποιήθηκε</translation> <translation id="4673427585974421255">Να διατηρηθεί ενεργό</translation> <translation id="4677040906536311086">Φύλλο Google</translation> +<translation id="468019262817532242">Κανένας δεν μπορεί να μοιραστεί περιεχόμενο μαζί σας</translation> <translation id="468293128311738995">Εφαρμογές από το τηλέφωνό σας</translation> <translation id="4690510401873698237">Ράφι στο κάτω μέρος</translation> <translation id="4696813013609194136">Ξεκλείδωμα συσκευής με κωδικό γονέα</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016">Κωδικός πρόσβασης για <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="4777825441726637019">Play Store</translation> <translation id="4778095205580009397">Ο Βοηθός Google δεν είναι διαθέσιμος σε περίοδο λειτουργίας επίδειξης.</translation> +<translation id="4785412405516449976">Μόνο οι επαφές σας με Λογαριασμό Google</translation> <translation id="4789348252524569426">Δεν είναι δυνατή η εγκατάσταση αρχείων ομιλίας. Η συσκευή σας πρέπει να ενημερωθεί. Επανεκκινήστε τη συσκευή και δοκιμάστε ξανά.</translation> <translation id="478959186716341421">Μετάδοση</translation> <translation id="4798403412327076414">Την επόμενη φορά που θα συνδεθείτε θα εμφανιστούν τα παράθυρα και οι εφαρμογές που έχετε ανοίξει στο παρελθόν</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">Εγγραφή μέρους της οθόνης</translation> <translation id="5187627942836026988">Εμφάνιση λεπτομερειών σημείου πρόσβασης Wi-Fi. Το σημείο πρόσβασης Wi-Fi έχει αποκλειστεί από τον διαχειριστή σας.</translation> <translation id="5197255632782567636">Internet</translation> +<translation id="5198039720391525849">Επιλεγμένα GIF</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> συμβάντα</translation> <translation id="5198715732953550718">Η εφαρμογή <ph name="MOVED_APP_NAME" /> συνδυάστηκε με την εφαρμογή <ph name="IN_PLACE_APP" /> για τη δημιουργία νέου φακέλου.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">Επανάληψη φόρτωσης τρέχουσας σελίδας</translation> <translation id="6200515304866777730">Δεν υποστηρίζεται από την εφαρμογή</translation> <translation id="6210042900243040400">Σύνδεση της συσκευής <ph name="NAME" /> που είχε αποθηκευτεί στη διεύθυνση <ph name="EMAIL" /></translation> +<translation id="6212580734499190393">Για 10 λ.</translation> <translation id="6213808132343683860">Λήψη μερικού στιγμιότυπου οθόνης ή μερικής εγγραφής οθόνης</translation> <translation id="621606890568890214">Ανάπτυξη του Google Classroom</translation> <translation id="6216759484154215561">Άνοιξε ο σύνδεσμος Μάθετε περισσότερα στο πρόγραμμα περιήγησης</translation> @@ -1953,6 +1958,7 @@ <translation id="7599378375976398913">Εισαγωγή επιλεγμένου αποτελέσματος</translation> <translation id="7600875258240007829">Δείτε όλες τις ειδοποιήσεις</translation> <translation id="7601417191446344542">Ενεργοποίηση υπενθύμισης σίγασης;</translation> +<translation id="7602187221150705972">Αναζητήστε emoji, GIF και άλλα</translation> <translation id="7607002721634913082">Έγινε παύση</translation> <translation id="7609951632080598826">Προβολή ημερολογίου, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">Επανασύνδεση κάμερας.</translation> @@ -2049,6 +2055,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Οι ειδοποιήσεις τίθενται σε σίγαση έως τις <ph name="TIME" /> κατά τη συγκέντρωση</translation> +<translation id="7901010467630324625">Μόνο συσκευές που είναι συνδεδεμένες στον λογαριασμό <ph name="EMAIL" /></translation> <translation id="7901190436359881020">Εναλλαγή παραθύρων</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Αγγίξτε τον αισθητήρα δακτυλικών αποτυπωμάτων.</translation>
diff --git a/ash/strings/ash_strings_en-GB.xtb b/ash/strings/ash_strings_en-GB.xtb index c03bc23..0785005 100644 --- a/ash/strings/ash_strings_en-GB.xtb +++ b/ash/strings/ash_strings_en-GB.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">Dismiss setting up viewing your phone's recent photos, media, notifications and apps</translation> <translation id="4491109536499578614">Image</translation> <translation id="450584155212756404">Dev channel</translation> +<translation id="4513044611477939680">Quick Share</translation> <translation id="4513946894732546136">Feedback</translation> <translation id="4518404433291145981">To unlock your Chromebook, first unlock your phone</translation> <translation id="4527045527269911712">Bluetooth device "<ph name="DEVICE_NAME" />" would like permission to pair.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">Battery Saver turned on</translation> <translation id="4673427585974421255">Keep on</translation> <translation id="4677040906536311086">Google Sheet</translation> +<translation id="468019262817532242">No one can share with you</translation> <translation id="468293128311738995">Apps from your phone</translation> <translation id="4690510401873698237">Shelf on bottom</translation> <translation id="4696813013609194136">Unlock device with parent code</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016">Password for <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="4777825441726637019">Play Store</translation> <translation id="4778095205580009397">The Google Assistant is not available in a demo session.</translation> +<translation id="4785412405516449976">Only your contacts with a Google Account</translation> <translation id="4789348252524569426">Can't install speech files. Your device needs to be updated. Restart your device and try again.</translation> <translation id="478959186716341421">Casting</translation> <translation id="4798403412327076414">You'll see previously opened windows and apps the next time that you sign in</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">Record partial screen</translation> <translation id="5187627942836026988">Show hotspot details. Hotspot is blocked by your administrator.</translation> <translation id="5197255632782567636">Internet</translation> +<translation id="5198039720391525849">Featured GIFs</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> events</translation> <translation id="5198715732953550718"><ph name="MOVED_APP_NAME" /> combined with <ph name="IN_PLACE_APP" /> to create new folder.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">Reload current page</translation> <translation id="6200515304866777730">Not supported by app</translation> <translation id="6210042900243040400">Connect <ph name="NAME" /> previously saved to <ph name="EMAIL" /></translation> +<translation id="6212580734499190393">For 10 min</translation> <translation id="6213808132343683860">Take partial screenshot or screen recording</translation> <translation id="621606890568890214">Expand Google Classroom</translation> <translation id="6216759484154215561">Opened learn more link in the browser</translation> @@ -1953,6 +1958,7 @@ <translation id="7599378375976398913">Inserting selected result</translation> <translation id="7600875258240007829">See all notifications</translation> <translation id="7601417191446344542">Turn on mute nudge?</translation> +<translation id="7602187221150705972">Search emojis, GIFs and more</translation> <translation id="7607002721634913082">Paused</translation> <translation id="7609951632080598826">Calendar view, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">Camera reconnected.</translation> @@ -2049,6 +2055,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Notifications are muted until <ph name="TIME" /> while focusing</translation> +<translation id="7901010467630324625">Only devices signed in to <ph name="EMAIL" /></translation> <translation id="7901190436359881020">Swap the windows</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Touch the fingerprint sensor</translation>
diff --git a/ash/strings/ash_strings_es.xtb b/ash/strings/ash_strings_es.xtb index c4558ad..66c7f12 100644 --- a/ash/strings/ash_strings_es.xtb +++ b/ash/strings/ash_strings_es.xtb
@@ -1029,6 +1029,7 @@ <translation id="4485506555414638855">Cerrar la configuración de la visualización de las fotos, el contenido multimedia, las notificaciones y las aplicaciones recientes de tu teléfono</translation> <translation id="4491109536499578614">Imagen</translation> <translation id="450584155212756404">Canal para desarrolladores</translation> +<translation id="4513044611477939680">Quick Share</translation> <translation id="4513946894732546136">Comentarios</translation> <translation id="4518404433291145981">Para desbloquear tu Chromebook, desbloquea primero tu teléfono</translation> <translation id="4527045527269911712">El dispositivo Bluetooth "<ph name="DEVICE_NAME" />" solicita permiso para emparejarse.</translation> @@ -1080,6 +1081,7 @@ <translation id="4672539464599646374">Ahorro de batería activado</translation> <translation id="4673427585974421255">Mantener activado</translation> <translation id="4677040906536311086">Hoja de cálculo de Google</translation> +<translation id="468019262817532242">Nadie puede compartir contigo</translation> <translation id="468293128311738995">Aplicaciones de tu teléfono</translation> <translation id="4690510401873698237">La estantería está en la parte inferior</translation> <translation id="4696813013609194136">Desbloquear con código parental</translation> @@ -1111,6 +1113,7 @@ <translation id="4776917500594043016">Contraseña de <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="4777825441726637019">Play Store</translation> <translation id="4778095205580009397">El Asistente de Google no está disponible en las sesiones de demostración.</translation> +<translation id="4785412405516449976">Solo tus contactos con una cuenta de Google</translation> <translation id="4789348252524569426">No se pueden instalar los archivos de voz. El dispositivo debe actualizarse. Reinícialo y vuelve a intentarlo.</translation> <translation id="478959186716341421">Enviando contenido</translation> <translation id="4798403412327076414">La próxima vez que inicies sesión, verás las ventanas y aplicaciones que has abierto anteriormente</translation> @@ -1240,6 +1243,7 @@ <translation id="5176318573511391780">Grabar una parte de la pantalla</translation> <translation id="5187627942836026988">Mostrar detalles del punto de acceso. Tu administrador ha bloqueado el punto de acceso.</translation> <translation id="5197255632782567636">Internet</translation> +<translation id="5198039720391525849">GIFs destacados</translation> <translation id="5198413532174090167"><ph name="DATE" />, eventos: <ph name="NUMBER" /></translation> <translation id="5198715732953550718">Se ha combinado <ph name="MOVED_APP_NAME" /> con <ph name="IN_PLACE_APP" /> para crear una carpeta.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1561,6 +1565,7 @@ <translation id="6199775032047436064">Cargar de nuevo la página actual</translation> <translation id="6200515304866777730">No compatible con la aplicación</translation> <translation id="6210042900243040400">Conectar dispositivo <ph name="NAME" /> guardado anteriormente en <ph name="EMAIL" /></translation> +<translation id="6212580734499190393">Durante 10 min</translation> <translation id="6213808132343683860">Hacer captura o grabación de pantalla parcial</translation> <translation id="621606890568890214">Desplegar Google Classroom</translation> <translation id="6216759484154215561">Enlace con más información abierto en el navegador</translation> @@ -1954,6 +1959,7 @@ <translation id="7599378375976398913">Insertando resultado seleccionado</translation> <translation id="7600875258240007829">Ver todas las notificaciones</translation> <translation id="7601417191446344542">¿Activar aviso de micrófono silenciado?</translation> +<translation id="7602187221150705972">Busca emojis, GIFs y más</translation> <translation id="7607002721634913082">En pausa</translation> <translation id="7609951632080598826">Vista de calendario, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">La cámara se ha vuelto a conectar.</translation> @@ -2050,6 +2056,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Notificaciones silenciadas hasta las <ph name="TIME" /> mientras te concentras</translation> +<translation id="7901010467630324625">Solo los dispositivos con sesión iniciada en <ph name="EMAIL" /></translation> <translation id="7901190436359881020">Intercambiar las ventanas</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Toca el sensor de huellas digitales</translation>
diff --git a/ash/strings/ash_strings_et.xtb b/ash/strings/ash_strings_et.xtb index 5160f10..ae4dd252 100644 --- a/ash/strings/ash_strings_et.xtb +++ b/ash/strings/ash_strings_et.xtb
@@ -1029,6 +1029,7 @@ <translation id="4485506555414638855">Teie telefoni hiljutiste fotode, meediafailide, märguannete ja rakenduste kuvamise seadistamisest loobumine</translation> <translation id="4491109536499578614">Image</translation> <translation id="450584155212756404">Arenduskanal</translation> +<translation id="4513044611477939680">Kiirjagamine</translation> <translation id="4513946894732546136">Tagasiside</translation> <translation id="4518404433291145981">Chromebooki avamiseks avage esmalt oma telefon</translation> <translation id="4527045527269911712">Bluetoothi seade „<ph name="DEVICE_NAME" />” küsib luba sidumiseks.</translation> @@ -1080,6 +1081,7 @@ <translation id="4672539464599646374">Akusäästja on sisse lülitatud</translation> <translation id="4673427585974421255">Jäta sisselülitatuks</translation> <translation id="4677040906536311086">Google’i arvutustabel</translation> +<translation id="468019262817532242">Keegi ei saa teiega jagada</translation> <translation id="468293128311738995">Rakendused teie telefonist</translation> <translation id="4690510401873698237">Riiul asub allpool</translation> <translation id="4696813013609194136">Avage seade lapsevanema koodiga</translation> @@ -1111,6 +1113,7 @@ <translation id="4776917500594043016">Kasutaja <ph name="USER_EMAIL_ADDRESS" /> parool</translation> <translation id="4777825441726637019">Play pood</translation> <translation id="4778095205580009397">Google'i assistent ei ole demoseansi puhul saadaval.</translation> +<translation id="4785412405516449976">Ainult teie kontaktid, kellel on Google'i konto</translation> <translation id="4789348252524569426">Kõnefaile ei saa installida. Teie seadet on vaja värskendada. Taaskäivitage seade ja proovige uuesti.</translation> <translation id="478959186716341421">Ülekandmine</translation> <translation id="4798403412327076414">Järgmine kord sisse logides näete eelmise seansi ajal avatud aknaid ja rakendusi</translation> @@ -1240,6 +1243,7 @@ <translation id="5176318573511391780">Ekraani osa salvestamine</translation> <translation id="5187627942836026988">Kuumkoha üksikasjade kuvamine. Teie administraator on kuumkoha blokeerinud.</translation> <translation id="5197255632782567636">Internet</translation> +<translation id="5198039720391525849">Esiletõstetud GIF-id</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> sündmust</translation> <translation id="5198715732953550718"><ph name="MOVED_APP_NAME" /> kombineeriti uue kausta loomiseks rakendusega <ph name="IN_PLACE_APP" />.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1561,6 +1565,7 @@ <translation id="6199775032047436064">Laadib praeguse lehe uuesti</translation> <translation id="6200515304866777730">Rakendus ei toeta</translation> <translation id="6210042900243040400">Ühendage <ph name="NAME" />, mis oli varem salvestatud kontole <ph name="EMAIL" /></translation> +<translation id="6212580734499190393">10 minutit</translation> <translation id="6213808132343683860">Jäädvusta osaline ekraanipilt või ekraanisalvestis</translation> <translation id="621606890568890214">Google Classroomi laiendamine</translation> <translation id="6216759484154215561">Lisateabe link avatud brauseris</translation> @@ -1954,6 +1959,7 @@ <translation id="7599378375976398913">Valitud tulemuse sisestamine</translation> <translation id="7600875258240007829">Kuva kõik märguanded</translation> <translation id="7601417191446344542">Kas soovite vaigistamise märguande sisse lülitada?</translation> +<translation id="7602187221150705972">Otsige emotikone, GIF-e ja muud</translation> <translation id="7607002721634913082">Peatatud</translation> <translation id="7609951632080598826">Kalendrivaade, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">Kaamera ühendati uuesti.</translation> @@ -2050,6 +2056,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Keskendumise ajal on märguanded kuni <ph name="TIME" /> vaigistatud</translation> +<translation id="7901010467630324625">Ainult kontole <ph name="EMAIL" /> sisse logitud seadmed</translation> <translation id="7901190436359881020">Vaheta aknad</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Puudutage sõrmejäljeandurit</translation>
diff --git a/ash/strings/ash_strings_fa.xtb b/ash/strings/ash_strings_fa.xtb index aeb99e02..b06df40 100644 --- a/ash/strings/ash_strings_fa.xtb +++ b/ash/strings/ash_strings_fa.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">بستن راهاندازی مشاهده عکسها، رسانهها، اعلانها، و برنامههای جدید تلفن</translation> <translation id="4491109536499578614">تصویر</translation> <translation id="450584155212756404">کانال برنامهنویسها</translation> +<translation id="4513044611477939680">همرسانی سریع</translation> <translation id="4513946894732546136">بازخورد</translation> <translation id="4518404433291145981">برای باز کردن قفل Chromebook، ابتدا قفل تلفنتان را باز کنید</translation> <translation id="4527045527269911712">دستگاه بلوتوث «<ph name="DEVICE_NAME" />» برای مرتبطسازی به مجوز نیاز دارد.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">«بهینهسازی باتری» روشن شد</translation> <translation id="4673427585974421255">روشن باشد</translation> <translation id="4677040906536311086">کاربرگنگار Google</translation> +<translation id="468019262817532242">هیچ فردی نمیتواند با شما همرسانی کند</translation> <translation id="468293128311738995">برنامههای تلفن شما</translation> <translation id="4690510401873698237">قفسه در پایین است</translation> <translation id="4696813013609194136">باز کردن قفل دستگاه با کد والدین</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016">گذرواژه <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="4777825441726637019">فروشگاه Play</translation> <translation id="4778095205580009397">«دستیار Google» در جلسه نمایشی در دسترس نیست.</translation> +<translation id="4785412405516449976">فقط مخاطبینی که «حساب Google» دارند</translation> <translation id="4789348252524569426">فایلهای گفتار نصب نشد. دستگاهتان باید بهروزرسانی شود. دستگاه را بازراهاندازی کنید و دوباره امتحان کنید.</translation> <translation id="478959186716341421">در حال فرستادن</translation> <translation id="4798403412327076414">دفعه بعدی که به سیستم وارد شوید، پنجرهها و برنامههای بازشده قبلی را خواهید دید</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">ضبط کردن نیمصفحه</translation> <translation id="5187627942836026988">نمایش جزئیات نقطه اتصال. سرپرست نقطه اتصال را مسدود کرده است.</translation> <translation id="5197255632782567636">اینترنت</translation> +<translation id="5198039720391525849">گیفهای ویژه</translation> <translation id="5198413532174090167"><ph name="DATE" />، <ph name="NUMBER" /> رویداد</translation> <translation id="5198715732953550718"><ph name="MOVED_APP_NAME" /> با <ph name="IN_PLACE_APP" /> ترکیب شد تا پوشه جدیدی ایجاد شود.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />، <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />، <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">بارگیری مجدد صفحه فعلی</translation> <translation id="6200515304866777730">در این برنامه پشتیبانی نمیشود</translation> <translation id="6210042900243040400">به <ph name="NAME" /> که قبلاً در <ph name="EMAIL" /> ذخیره شده متصل شوید</translation> +<translation id="6212580734499190393">بهمدت ۱۰ دقیقه</translation> <translation id="6213808132343683860">ثبت نماگرفت یا ضبط بخشی از صفحه</translation> <translation id="621606890568890214">ازهم باز کردن Google Classroom</translation> <translation id="6216759484154215561">پیوند «بیشتر بدانید» در مرورگر باز شد</translation> @@ -1953,6 +1958,7 @@ <translation id="7599378375976398913">درج نتیجه انتخابشده</translation> <translation id="7600875258240007829">دیدن همه اعلانها</translation> <translation id="7601417191446344542">«تذکر میکروفون خاموش» روشن شود؟</translation> +<translation id="7602187221150705972">جستجوی اموجی، گیف، و موارد دیگر</translation> <translation id="7607002721634913082">متوقف</translation> <translation id="7609951632080598826">نمای «تقویم» ،<ph name="DATE" />، <ph name="TIME" /></translation> <translation id="7611213136657090146">دوربین دوباره متصل شد.</translation> @@ -2049,6 +2055,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">وقتی «تمرکز» روشن باشد، اعلانها تا <ph name="TIME" /> بیصدا میشود</translation> +<translation id="7901010467630324625">فقط دستگاههای واردشده به سیستم <ph name="EMAIL" /></translation> <translation id="7901190436359881020">جابهجا کردن پنجرهها</translation> <translation id="7901405293566323524">مرکز تلفن</translation> <translation id="7902625623987030061">حسگر اثر انگشت را لمس کنید</translation>
diff --git a/ash/strings/ash_strings_fi.xtb b/ash/strings/ash_strings_fi.xtb index bd2b773..571a7312 100644 --- a/ash/strings/ash_strings_fi.xtb +++ b/ash/strings/ash_strings_fi.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">Hylkää puhelimen viimeaikaisten kuvien, median, ilmoitusten ja sovellusten katselun käyttöönotto</translation> <translation id="4491109536499578614">Kuva</translation> <translation id="450584155212756404">Kehittäjäversio</translation> +<translation id="4513044611477939680">Quick Share</translation> <translation id="4513946894732546136">Palaute</translation> <translation id="4518404433291145981">Voit avata Chromebookin lukituksen avaamalla ensin puhelimesi</translation> <translation id="4527045527269911712">Bluetooth-laite <ph name="DEVICE_NAME" /> pyytää lupaa laiteparin muodostamiseen.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">Virransäästö päällä</translation> <translation id="4673427585974421255">Pidä päällä</translation> <translation id="4677040906536311086">Google Sheets ‑taulukko</translation> +<translation id="468019262817532242">Kukaan ei voi jakaa sinulle sisältöä</translation> <translation id="468293128311738995">Puhelimesi sovellukset</translation> <translation id="4690510401873698237">Hylly alareunassa</translation> <translation id="4696813013609194136">Avaa lukitus vanhemman koodilla</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016">Osoitteen <ph name="USER_EMAIL_ADDRESS" /> salasana</translation> <translation id="4777825441726637019">Play Kauppa</translation> <translation id="4778095205580009397">Google Assistantia ei voi käyttää demo-käyttökerralla.</translation> +<translation id="4785412405516449976">Vain kontaktisi, joilla on Google-tili</translation> <translation id="4789348252524569426">Puhetiedostojen asentaminen ei onnistu. Laite on päivitettävä. Käynnistä laite uudelleen ja yritä sitten.</translation> <translation id="478959186716341421">Suoratoistetaan</translation> <translation id="4798403412327076414">Näet aiemmin avatut ikkunat ja sovellukset, kun kirjaudut sisään seuraavan kerran</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">Tallenna osittainen näyttö</translation> <translation id="5187627942836026988">Näytä hotspotin tiedot. Järjestelmänvalvoja on estänyt hotspotin.</translation> <translation id="5197255632782567636">Internet</translation> +<translation id="5198039720391525849">GIF-suositukset</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> tapahtumaa</translation> <translation id="5198715732953550718"><ph name="MOVED_APP_NAME" /> ja <ph name="IN_PLACE_APP" /> yhdistettiin uudeksi kansioksi.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">Lataa nykyinen sivu uudelleen</translation> <translation id="6200515304866777730">Sovellus ei tue tätä</translation> <translation id="6210042900243040400">Yhdistä <ph name="NAME" />, joka tallennettiin aiemmin tänne: <ph name="EMAIL" /></translation> +<translation id="6212580734499190393">10 minuutiksi</translation> <translation id="6213808132343683860">Ota osittainen kuvakaappaus tai tallennus näytöltä</translation> <translation id="621606890568890214">Laajenna Google Classroom</translation> <translation id="6216759484154215561">Lue lisää ‑linkki avattu selaimessa</translation> @@ -1953,6 +1958,7 @@ <translation id="7599378375976398913">Lisätään valittua tulosta</translation> <translation id="7600875258240007829">Näytä kaikki ilmoitukset</translation> <translation id="7601417191446344542">Laitetaanko mykistysmuistutus päälle?</translation> +<translation id="7602187221150705972">Hae esimerkiksi emojeita ja GIFejä</translation> <translation id="7607002721634913082">Keskeytetty</translation> <translation id="7609951632080598826">Kalenterinäkymä, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">Kamera yhdistetty uudelleen.</translation> @@ -2049,6 +2055,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Ilmoitukset on mykistetty klo <ph name="TIME" /> asti keskittymisen aikana</translation> +<translation id="7901010467630324625">Vain laitteet, jotka ovat kirjautuneet tilille <ph name="EMAIL" /></translation> <translation id="7901190436359881020">Vaihda ikkunoita</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Kosketa sormenjälkitunnistinta</translation>
diff --git a/ash/strings/ash_strings_fil.xtb b/ash/strings/ash_strings_fil.xtb index 706ba18..44b779e 100644 --- a/ash/strings/ash_strings_fil.xtb +++ b/ash/strings/ash_strings_fil.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">I-dismiss ang pag-set up sa pagtingin sa mga kamakailang larawan, media, notification, at app ng iyong telepono</translation> <translation id="4491109536499578614">Larawan</translation> <translation id="450584155212756404">Dev Channel</translation> +<translation id="4513044611477939680">Quick Share</translation> <translation id="4513946894732546136">Feedback</translation> <translation id="4518404433291145981">Para i-unlock ang iyong Chromebook, i-unlock muna ang telepono mo</translation> <translation id="4527045527269911712">Gusto ng bluetooth device na "<ph name="DEVICE_NAME" />" na magpares.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">Na-on ang Pantipid ng Baterya</translation> <translation id="4673427585974421255">I-on lang</translation> <translation id="4677040906536311086">Google Sheet</translation> +<translation id="468019262817532242">Walang makakapag-share sa iyo</translation> <translation id="468293128311738995">Mga app mula sa iyong telepono</translation> <translation id="4690510401873698237">Nasa ibaba ang shelf</translation> <translation id="4696813013609194136">I-unlock ang device gamit ang parent code</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016">Password para sa <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="4777825441726637019">Play Store</translation> <translation id="4778095205580009397">Hindi available ang Google Assistant sa demo session.</translation> +<translation id="4785412405516449976">Mga contact mo lang na may Google Account</translation> <translation id="4789348252524569426">Hindi ma-install ang mga file ng speech. Kailangang i-update ang iyong device. I-restart ang iyong device at subukan ulit.</translation> <translation id="478959186716341421">Nagka-cast</translation> <translation id="4798403412327076414">Makikita mo ang mga dating binuksang window at app sa susunod na mag-sign in ka</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">I-record ang hindi buong screen</translation> <translation id="5187627942836026988">Ipakita ang mga detalye ng hotspot. Na-block ng iyong administrator ang hotspot.</translation> <translation id="5197255632782567636">Internet</translation> +<translation id="5198039720391525849">Mga itinatampok na GIF</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> (na) event</translation> <translation id="5198715732953550718">Ipinagsama ang <ph name="MOVED_APP_NAME" /> at <ph name="IN_PLACE_APP" /> para gumawa ng bagong folder.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">I-reload ang iyong kasalukuyang pahina</translation> <translation id="6200515304866777730">Hindi sinusuportahan ng app</translation> <translation id="6210042900243040400">Ikonekta ang <ph name="NAME" /> na dating na-save sa <ph name="EMAIL" /></translation> +<translation id="6212580734499190393">Sa loob ng 10 min</translation> <translation id="6213808132343683860">Kumuha ng hindi buong screenshot o recording ng screen</translation> <translation id="621606890568890214">Palawakin ang Google Classroom</translation> <translation id="6216759484154215561">Binuksan sa browser ang link na matuto pa</translation> @@ -1952,6 +1957,7 @@ <translation id="7599378375976398913">Inilalagay ang piniling resulta</translation> <translation id="7600875258240007829">Tingnan ang lahat ng notification</translation> <translation id="7601417191446344542">I-on ang nudge kapag na-mute?</translation> +<translation id="7602187221150705972">Maghanap ng mga emoji, GIF, at higit pa</translation> <translation id="7607002721634913082">I-pause</translation> <translation id="7609951632080598826">View ng kalendaryo, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">Nakakonekta ulit ang camera.</translation> @@ -2048,6 +2054,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Naka-mute ang mga notification hanggang <ph name="TIME" /> habang nagfo-focus</translation> +<translation id="7901010467630324625">Mga device lang na naka-sign in sa <ph name="EMAIL" /></translation> <translation id="7901190436359881020">Ipagpalit ang mga window</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Pindutin ang fingerprint sensor</translation>
diff --git a/ash/strings/ash_strings_fr-CA.xtb b/ash/strings/ash_strings_fr-CA.xtb index e0b777d..a16547e 100644 --- a/ash/strings/ash_strings_fr-CA.xtb +++ b/ash/strings/ash_strings_fr-CA.xtb
@@ -1027,6 +1027,7 @@ <translation id="4485506555414638855">Ignorer la configuration de l'affichage des photos, des applications, des notifications et du contenu multimédia récents de votre téléphone</translation> <translation id="4491109536499578614">Image</translation> <translation id="450584155212756404">Version développeur</translation> +<translation id="4513044611477939680">Partage rapide</translation> <translation id="4513946894732546136">Commentaires</translation> <translation id="4518404433291145981">Pour déverrouiller votre Chromebook, déverrouillez d'abord votre téléphone</translation> <translation id="4527045527269911712">L'appareil Bluetooth « <ph name="DEVICE_NAME" /> » demande l'autorisation de s'associer.</translation> @@ -1078,6 +1079,7 @@ <translation id="4672539464599646374">L'Économiseur de pile est activé</translation> <translation id="4673427585974421255">Garder actif</translation> <translation id="4677040906536311086">Feuille de calcul Google</translation> +<translation id="468019262817532242">Personne ne peut partager avec vous</translation> <translation id="468293128311738995">Applications de votre téléphone</translation> <translation id="4690510401873698237">Étagère dans le bas</translation> <translation id="4696813013609194136">Déverrouiller l'appareil avec le code parental</translation> @@ -1109,6 +1111,7 @@ <translation id="4776917500594043016">Mot de passe pour <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="4777825441726637019">Play Store</translation> <translation id="4778095205580009397">L'Assistant Google n'est pas disponible dans une session de démonstration.</translation> +<translation id="4785412405516449976">Seulement vos contacts qui ont un compte Google</translation> <translation id="4789348252524569426">Impossible d'installer les fichiers vocaux. Votre appareil doit être mis à jour. Redémarrez votre appareil et réessayez.</translation> <translation id="478959186716341421">Diffusion en cours…</translation> <translation id="4798403412327076414">Vous verrez les fenêtres et les applis précédemment ouvertes la prochaine fois que vous vous connecterez</translation> @@ -1238,6 +1241,7 @@ <translation id="5176318573511391780">Enregistrer une partie de l'écran</translation> <translation id="5187627942836026988">Afficher les détails du point d'accès sans fil. Le point d'accès sans fil est bloqué par votre administrateur.</translation> <translation id="5197255632782567636">Internet</translation> +<translation id="5198039720391525849">GIF en vedette</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> événements</translation> <translation id="5198715732953550718">Les applications <ph name="MOVED_APP_NAME" /> et <ph name="IN_PLACE_APP" /> ont été combinées pour créer un dossier.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" /> : <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1559,6 +1563,7 @@ <translation id="6199775032047436064">Actualiser la page actuelle</translation> <translation id="6200515304866777730">Non pris en charge par l'application</translation> <translation id="6210042900243040400">Connectez <ph name="NAME" /> précédemment enregistré dans <ph name="EMAIL" /></translation> +<translation id="6212580734499190393">Pendant 10 min</translation> <translation id="6213808132343683860">Prendre une capture d'écran partielle ou un enregistrement d'écran</translation> <translation id="621606890568890214">Développer Google Classroom</translation> <translation id="6216759484154215561">Lien « En savoir plus » ouvert dans le navigateur</translation> @@ -1952,6 +1957,7 @@ <translation id="7599378375976398913">Insertion du résultat sélectionné</translation> <translation id="7600875258240007829">Afficher toutes les notifications</translation> <translation id="7601417191446344542">Activer le Rappel de son désactivé?</translation> +<translation id="7602187221150705972">Recherchez des émojis, des fichiers GIF et plus</translation> <translation id="7607002721634913082">Interrompu</translation> <translation id="7609951632080598826">Vue de l'agenda, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">Caméra reconnectée.</translation> @@ -2048,6 +2054,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Le son des notifications est désactivé jusqu'à <ph name="TIME" /> alors que le mode Sans distraction est activé</translation> +<translation id="7901010467630324625">Seulement les appareils connectés à <ph name="EMAIL" /></translation> <translation id="7901190436359881020">Basculez les fenêtres</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Touchez le capteur d'empreintes digitales</translation>
diff --git a/ash/strings/ash_strings_fr.xtb b/ash/strings/ash_strings_fr.xtb index 53dddf1..873601e20 100644 --- a/ash/strings/ash_strings_fr.xtb +++ b/ash/strings/ash_strings_fr.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">Ignorer la configuration concernant l'affichage des photos, notifications, applis et contenus multimédias récents de votre téléphone</translation> <translation id="4491109536499578614">Image</translation> <translation id="450584155212756404">Version en développement</translation> +<translation id="4513044611477939680">Quick Share</translation> <translation id="4513946894732546136">Commentaires</translation> <translation id="4518404433291145981">Pour déverrouiller votre Chromebook, déverrouillez d'abord votre téléphone</translation> <translation id="4527045527269911712">L'appareil Bluetooth "<ph name="DEVICE_NAME" />" demande l'autorisation de s'associer.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">Économiseur de batterie activé</translation> <translation id="4673427585974421255">Laisser activé</translation> <translation id="4677040906536311086">Feuille de calcul Google Sheets</translation> +<translation id="468019262817532242">Personne ne peut partager avec vous</translation> <translation id="468293128311738995">Applis de votre téléphone</translation> <translation id="4690510401873698237">Étagère en bas</translation> <translation id="4696813013609194136">Déverrouiller l'appareil avec le code parental</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016">Mot de passe de <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="4777825441726637019">Play Store</translation> <translation id="4778095205580009397">L'Assistant Google n'est pas disponible dans une session de démonstration.</translation> +<translation id="4785412405516449976">Seulement vos contacts disposant d'un compte Google</translation> <translation id="4789348252524569426">Impossible d'installer les fichiers vocaux. Votre appareil doit être mis à jour. Redémarrez-le et réessayez.</translation> <translation id="478959186716341421">Diffusion en cours…</translation> <translation id="4798403412327076414">Vous verrez les fenêtres et applis précédemment ouvertes à votre prochaine connexion</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">Enregistrer une partie de l'écran</translation> <translation id="5187627942836026988">Voir les détails du point d'accès. Celui-ci est bloqué par votre administrateur.</translation> <translation id="5197255632782567636">Internet</translation> +<translation id="5198039720391525849">Sélection de GIF</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> événements</translation> <translation id="5198715732953550718">Les applications <ph name="MOVED_APP_NAME" /> et <ph name="IN_PLACE_APP" /> ont été combinées pour créer un dossier.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" /> : <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">Actualiser la page actuelle</translation> <translation id="6200515304866777730">Non compatible avec l'appli</translation> <translation id="6210042900243040400">Associer les <ph name="NAME" /> précédemment enregistrés dans <ph name="EMAIL" /></translation> +<translation id="6212580734499190393">Pendant 10 min</translation> <translation id="6213808132343683860">Effectuer une capture d'écran partielle ou enregistrer une partie de l'écran</translation> <translation id="621606890568890214">Développer Google Classroom</translation> <translation id="6216759484154215561">Lien "En savoir plus" ouvert dans le navigateur</translation> @@ -1954,6 +1959,7 @@ <translation id="7599378375976398913">Insertion du résultat sélectionné…</translation> <translation id="7600875258240007829">Afficher toutes les notifications</translation> <translation id="7601417191446344542">Activer le rappel micro ?</translation> +<translation id="7602187221150705972">Rechercher des emoji, GIF, etc.</translation> <translation id="7607002721634913082">Suspendu</translation> <translation id="7609951632080598826">Vue de l'agenda, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">Appareil photo reconnecté.</translation> @@ -2050,6 +2056,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Les notifications sont désactivées jusqu'à <ph name="TIME" /> en mode Sans distractions</translation> +<translation id="7901010467630324625">Seulement les appareils connectés à <ph name="EMAIL" /></translation> <translation id="7901190436359881020">Intervertir les fenêtres</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Appuyez sur le lecteur d'empreinte</translation>
diff --git a/ash/strings/ash_strings_gl.xtb b/ash/strings/ash_strings_gl.xtb index 2e9691f..fb0197eb 100644 --- a/ash/strings/ash_strings_gl.xtb +++ b/ash/strings/ash_strings_gl.xtb
@@ -1029,6 +1029,7 @@ <translation id="4485506555414638855">Pechar a configuración de visualización do contido multimedia, das notificacións, das aplicacións e das fotos recentes do teu teléfono</translation> <translation id="4491109536499578614">Imaxe</translation> <translation id="450584155212756404">Canle Dev</translation> +<translation id="4513044611477939680">Quick Share</translation> <translation id="4513946894732546136">Dános a túa opinión</translation> <translation id="4518404433291145981">Para desbloquear o Chromebook, primeiro desbloquea o teléfono</translation> <translation id="4527045527269911712">O dispositivo Bluetooth "<ph name="DEVICE_NAME" />" quere obter permiso para sincronizarse.</translation> @@ -1080,6 +1081,7 @@ <translation id="4672539464599646374">Activouse a función Aforro de batería</translation> <translation id="4673427585974421255">Manter activado</translation> <translation id="4677040906536311086">Folla de cálculo de Google</translation> +<translation id="468019262817532242">Ninguén pode compartir contido contigo</translation> <translation id="468293128311738995">Aplicacións do teu teléfono</translation> <translation id="4690510401873698237">O estante está na parte inferior</translation> <translation id="4696813013609194136">Desbloquea o dispositivo co código parental</translation> @@ -1111,6 +1113,7 @@ <translation id="4776917500594043016">Contrasinal de <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="4777825441726637019">Play Store</translation> <translation id="4778095205580009397">O Asistente de Google non está dispoñible cando se utiliza unha sesión de demostración.</translation> +<translation id="4785412405516449976">Só os contactos que teñan unha Conta de Google</translation> <translation id="4789348252524569426">Non se puideron instalar os ficheiros de voz. Cómpre actualizar o teu dispositivo. Reinicia o dispositivo e téntao de novo.</translation> <translation id="478959186716341421">Emitindo</translation> <translation id="4798403412327076414">A próxima vez que inicies sesión verás as ventás e as aplicacións abertas anteriormente</translation> @@ -1240,6 +1243,7 @@ <translation id="5176318573511391780">Gravar pantalla parcial</translation> <translation id="5187627942836026988">Mostrar os detalles da zona wifi. A persoa administradora bloqueou a zona wifi.</translation> <translation id="5197255632782567636">Internet</translation> +<translation id="5198039720391525849">GIF destacados</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> eventos</translation> <translation id="5198715732953550718"><ph name="MOVED_APP_NAME" /> combinouse con <ph name="IN_PLACE_APP" /> para crear un cartafol novo.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1561,6 +1565,7 @@ <translation id="6199775032047436064">Recargar páxina actual</translation> <translation id="6200515304866777730">Función non admitida pola aplicación</translation> <translation id="6210042900243040400">Conecta o dispositivo (<ph name="NAME" />), que xa está gardado en <ph name="EMAIL" /></translation> +<translation id="6212580734499190393">Durante 10 min</translation> <translation id="6213808132343683860">Fai unha captura de pantalla parcial ou grava a pantalla</translation> <translation id="621606890568890214">Despregar Google Classroom</translation> <translation id="6216759484154215561">Abriuse no navegador a ligazón para obter máis información</translation> @@ -1954,6 +1959,7 @@ <translation id="7599378375976398913">Inserindo resultado seleccionado</translation> <translation id="7600875258240007829">Ver todas as notificacións</translation> <translation id="7601417191446344542">Queres activar o aviso de micrófono silenciado?</translation> +<translation id="7602187221150705972">Busca emojis, GIF e moito máis</translation> <translation id="7607002721634913082">En pausa</translation> <translation id="7609951632080598826">Vista de calendario, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">Reconectouse a cámara.</translation> @@ -2050,6 +2056,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Cando está activado o modo Sen distraccións, as notificacións están silenciadas ata a/s <ph name="TIME" /></translation> +<translation id="7901010467630324625">Só os dispositivos que teñan a sesión iniciada en <ph name="EMAIL" /></translation> <translation id="7901190436359881020">Cambiar as ventás</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Toca o sensor de impresión dixital</translation>
diff --git a/ash/strings/ash_strings_gu.xtb b/ash/strings/ash_strings_gu.xtb index 1eb2084..bf782b7d 100644 --- a/ash/strings/ash_strings_gu.xtb +++ b/ash/strings/ash_strings_gu.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">તમારા ફોનના તાજેતરના ફોટા, મીડિયા, નોટિફિકેશન અને ઍપ જોવાની સુવિધાનું સેટઅપ કરવાની પ્રક્રિયા છોડી દો</translation> <translation id="4491109536499578614">છબી</translation> <translation id="450584155212756404">Dev ચૅનલ</translation> +<translation id="4513044611477939680">ક્વિક શેર</translation> <translation id="4513946894732546136">પ્રતિસાદ</translation> <translation id="4518404433291145981">તમારી Chromebook અનલૉક કરવા માટે, પહેલાં તમારો ફોન અનલૉક કરો</translation> <translation id="4527045527269911712">Bluetooth ડિવાઇસ "<ph name="DEVICE_NAME" />" ને જોડી બનાવવા માટે પરવાનગી જોઈએ છે.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">બૅટરી સેવર ચાલુ કર્યું</translation> <translation id="4673427585974421255">ચાલુ રાખો</translation> <translation id="4677040906536311086">Google Sheetsમાં બનાવેલી શીટ</translation> +<translation id="468019262817532242">કોઈ તમારી સાથે શેર કરી શકશે નહીં</translation> <translation id="468293128311738995">તમારા ફોન પરની ઍપ</translation> <translation id="4690510401873698237">શેલ્ફ સૌથી નીચે છે</translation> <translation id="4696813013609194136">માતાપિતાના કોડ વડે ડિવાઇસને અનલૉક કરો</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" /> માટેનો પાસવર્ડ </translation> <translation id="4777825441726637019">Play Store</translation> <translation id="4778095205580009397">ડેમો સત્રમાં Google Assistant ઉપલબ્ધ નથી.</translation> +<translation id="4785412405516449976">માત્ર Google એકાઉન્ટમાંના તમારા સંપર્કો</translation> <translation id="4789348252524569426">સ્પીચ માટેની ફાઇલો ઇન્સ્ટૉલ કરી શકતા નથી. તમારા ડિવાઇસને અપડેટ કરવાની જરૂર છે. તમારું ડિવાઇસ ફરી શરૂ કરો અને ફરી પ્રયાસ કરો.</translation> <translation id="478959186716341421">કાસ્ટ કરી રહ્યાં છે</translation> <translation id="4798403412327076414">આગલી વખતે તમે સાઇન ઇન કરશો ત્યારે અગાઉ ખોલવામાં આવેલી વિન્ડો અને ઍપ તમને જોવા મળશે</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">આંશિક સ્ક્રીન રેકોર્ડ કરો</translation> <translation id="5187627942836026988">હૉટસ્પૉટની વિગતો બતાવો. તમારા ઍડમિનિસ્ટ્રેટર દ્વારા હૉટસ્પૉટ બ્લૉક કરવામાં આવ્યું છે.</translation> <translation id="5197255632782567636">ઇન્ટરનેટ</translation> +<translation id="5198039720391525849">વૈશિષ્ટિકૃત GIFs</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> ઇવેન્ટ</translation> <translation id="5198715732953550718">નવું ફોલ્ડર બનાવવા માટે <ph name="MOVED_APP_NAME" />ને <ph name="IN_PLACE_APP" /> સાથે જોડી.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">ચાલુ પૃષ્ઠ ફરીથી લોડ કરો </translation> <translation id="6200515304866777730">ઍપ દ્વારા સપોર્ટ કરવામાં આવતી નથી</translation> <translation id="6210042900243040400">અગાઉ <ph name="EMAIL" /> પર સાચવેલા <ph name="NAME" />ને કનેક્ટ કરો</translation> +<translation id="6212580734499190393">10 મિનિટ માટે</translation> <translation id="6213808132343683860">આંશિક સ્ક્રીનશૉટ અથવા આંશિક સ્ક્રીન રેકોર્ડિંગ લો</translation> <translation id="621606890568890214">Google Classroomને મોટું કરો</translation> <translation id="6216759484154215561">બ્રાઉઝરમાં 'વધુ જાણો' લિંક ખોલી</translation> @@ -1953,6 +1958,7 @@ <translation id="7599378375976398913">પસંદગીના પરિણામો શામેલ કરી રહ્યાં છીએ</translation> <translation id="7600875258240007829">બધા નોટિફિકેશન જુઓ</translation> <translation id="7601417191446344542">મ્યૂટ સંકેતની સુવિધા ચાલુ કરવી છે?</translation> +<translation id="7602187221150705972">ઇમોજી, GIFs અને બીજું ઘણું શોધો</translation> <translation id="7607002721634913082">થોભાવેલું</translation> <translation id="7609951632080598826">કૅલેન્ડરનો વ્યૂ, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">કૅમેરા ફરી કનેક્ટ કર્યો.</translation> @@ -2049,6 +2055,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">ફોકસ કરતી વખતે <ph name="TIME" /> વાગ્યા સુધી નોટિફિકેશન મ્યૂટ કર્યા છે</translation> +<translation id="7901010467630324625">માત્ર <ph name="EMAIL" />માં સાઇન ઇન થયેલા ડિવાઇસ</translation> <translation id="7901190436359881020">વિન્ડો સ્વૉપ કરો</translation> <translation id="7901405293566323524">ફોન હબ</translation> <translation id="7902625623987030061">ફિંગરપ્રિન્ટ સેન્સરને ટચ કરો</translation>
diff --git a/ash/strings/ash_strings_hr.xtb b/ash/strings/ash_strings_hr.xtb index b952440..da3bb1ac 100644 --- a/ash/strings/ash_strings_hr.xtb +++ b/ash/strings/ash_strings_hr.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">Odbacite postavljanje prikaza nedavnih fotografija, medijskih sadržaja, obavijesti i aplikacija na telefonu</translation> <translation id="4491109536499578614">Slika</translation> <translation id="450584155212756404">Razvojni kanal</translation> +<translation id="4513044611477939680">Brzo dijeljenje</translation> <translation id="4513946894732546136">Povratne informacije</translation> <translation id="4518404433291145981">Da biste otključali Chromebook, najprije otključajte telefon</translation> <translation id="4527045527269911712">Bluetooth uređaj "<ph name="DEVICE_NAME" />" traži dopuštenje za uparivanje.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">Uključena je štednja baterije</translation> <translation id="4673427585974421255">Ostavi uključeno</translation> <translation id="4677040906536311086">Google tablica</translation> +<translation id="468019262817532242">Nitko ne može dijeliti s vama</translation> <translation id="468293128311738995">Aplikacije s telefona</translation> <translation id="4690510401873698237">Polica pri dnu</translation> <translation id="4696813013609194136">Otključajte uređaj roditeljskim kodom</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016">Zaporka za adresu <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="4777825441726637019">Trgovina Play</translation> <translation id="4778095205580009397">Google asistent nije dostupan u demosesiji.</translation> +<translation id="4785412405516449976">Samo vaši kontakti s Google računom</translation> <translation id="4789348252524569426">Nije moguće instalirati govorne datoteke. Uređaj se treba ažurirati. Ponovno pokrenite uređaj i pokušajte opet.</translation> <translation id="478959186716341421">Emitiranje</translation> <translation id="4798403412327076414">Prilikom sljedeće prijave vidjet ćete prethodno otvorene prozore i aplikacije</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">Snimanje dijela zaslona</translation> <translation id="5187627942836026988">Prikažite pojedinosti žarišne točke. Žarišnu točku blokirao je vaš administrator.</translation> <translation id="5197255632782567636">Internet</translation> +<translation id="5198039720391525849">Istaknuti GIF-ovi</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> događaj/događaja</translation> <translation id="5198715732953550718">Aplikacija <ph name="MOVED_APP_NAME" /> povezana je s aplikacijom <ph name="IN_PLACE_APP" /> u novu mapu.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">Ponovno učitaj trenutačnu stranicu</translation> <translation id="6200515304866777730">Nije podržano u aplikaciji</translation> <translation id="6210042900243040400">Povežite uređaj <ph name="NAME" /> koji je prethodno spremljen na e-adresu <ph name="EMAIL" /></translation> +<translation id="6212580734499190393">10 min</translation> <translation id="6213808132343683860">Izrada djelomične snimke zaslona ili snimanje zaslona</translation> <translation id="621606890568890214">Proširi Google učionicu</translation> <translation id="6216759484154215561">Otvorena veza sa savjetima u pregledniku</translation> @@ -1953,6 +1958,7 @@ <translation id="7599378375976398913">Umetanje odabranog rezultata</translation> <translation id="7600875258240007829">Pogledajte sve obavijesti</translation> <translation id="7601417191446344542">Želite li uključiti podsjećanje na isključeni mikrofon?</translation> +<translation id="7602187221150705972">Pretražite emojije, GIF-ove i drugo</translation> <translation id="7607002721634913082">Pauzirano</translation> <translation id="7609951632080598826">Prikaz kalendara, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">Kamera je ponovo povezana.</translation> @@ -2049,6 +2055,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Tijekom fokusiranja obavijesti su isključene do <ph name="TIME" /></translation> +<translation id="7901010467630324625">Samo uređaji prijavljeni na račun <ph name="EMAIL" /></translation> <translation id="7901190436359881020">Zamijeni prozore</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Dodirnite senzor otiska prsta</translation>
diff --git a/ash/strings/ash_strings_hu.xtb b/ash/strings/ash_strings_hu.xtb index f2b21628..0260c494 100644 --- a/ash/strings/ash_strings_hu.xtb +++ b/ash/strings/ash_strings_hu.xtb
@@ -1029,6 +1029,7 @@ <translation id="4485506555414638855">A telefonján lévő legutóbbi fotók, médiatartalmak, értesítések és alkalmazások megtekintésére vonatkozó beállítás elvetése</translation> <translation id="4491109536499578614">Kép</translation> <translation id="450584155212756404">Fejlesztői csatorna</translation> +<translation id="4513044611477939680">Quick Share</translation> <translation id="4513946894732546136">Visszajelzés</translation> <translation id="4518404433291145981">A Chromebook zárolásának feloldásához először oldja fel a telefonja zárolását.</translation> <translation id="4527045527269911712">A(z) „<ph name="DEVICE_NAME" />” Bluetooth-eszköz engedélyt kér a párosításra.</translation> @@ -1080,6 +1081,7 @@ <translation id="4672539464599646374">Akkumulátorkímélő mód bekapcsolva</translation> <translation id="4673427585974421255">Bekapcsolva hagyom</translation> <translation id="4677040906536311086">Google-táblázat</translation> +<translation id="468019262817532242">Senki sem oszthat meg Önnel tartalmakat</translation> <translation id="468293128311738995">Alkalmazások a telefonjáról</translation> <translation id="4690510401873698237">A polc alul található</translation> <translation id="4696813013609194136">Zárolás feloldása szülői kóddal</translation> @@ -1111,6 +1113,7 @@ <translation id="4776917500594043016">A(z) <ph name="USER_EMAIL_ADDRESS" /> fiókhoz tartozó jelszó</translation> <translation id="4777825441726637019">Play Áruház</translation> <translation id="4778095205580009397">A Google Segéd nem áll rendelkezésre bemutató munkamenetben.</translation> +<translation id="4785412405516449976">Csak az Ön Google-fiókkal rendelkező ismerősei</translation> <translation id="4789348252524569426">Nem sikerült telepíteni a beszédfájlokat. Szükség van az eszköz frissítésére. Indítsa újra az eszközt, és próbálkozzon újra.</translation> <translation id="478959186716341421">Átküldés folyamatban</translation> <translation id="4798403412327076414">A következő bejelentkezéskor látni fogja az előzőleg megnyitott ablakokat és alkalmazásokat</translation> @@ -1240,6 +1243,7 @@ <translation id="5176318573511391780">Részleges képernyő rögzítése</translation> <translation id="5187627942836026988">Hotspotadatok megjelenítése. A rendszergazda letiltotta a hotspotot.</translation> <translation id="5197255632782567636">Internet</translation> +<translation id="5198039720391525849">Kiemelt GIF-ek</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> esemény</translation> <translation id="5198715732953550718">A következő alkalmazások össze lettek vonva egy új mappába: <ph name="MOVED_APP_NAME" /> és <ph name="IN_PLACE_APP" />.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1561,6 +1565,7 @@ <translation id="6199775032047436064">A jelenlegi oldal újratöltése</translation> <translation id="6200515304866777730">Nem támogatja az alkalmazás</translation> <translation id="6210042900243040400">A(z) <ph name="EMAIL" /> fiókhoz korábban mentett <ph name="NAME" /> csatlakoztatása</translation> +<translation id="6212580734499190393">10 percig</translation> <translation id="6213808132343683860">Részleges képernyőkép vagy képernyőfelvétel készítése</translation> <translation id="621606890568890214">A Google Tanterem kibontása</translation> <translation id="6216759484154215561">További információk linkje megnyitva a böngészőben</translation> @@ -1954,6 +1959,7 @@ <translation id="7599378375976398913">A kijelölt találat beszúrása</translation> <translation id="7600875258240007829">Összes értesítés megtekintése</translation> <translation id="7601417191446344542">Bekapcsolja a némításra emlékeztetést?</translation> +<translation id="7602187221150705972">Emojik, GIF-ek és egyebek keresése</translation> <translation id="7607002721634913082">Szünet</translation> <translation id="7609951632080598826">Naptárnézet, <ph name="DATE" /> <ph name="TIME" /></translation> <translation id="7611213136657090146">Helyreállt a kapcsolat a kamerával.</translation> @@ -2050,6 +2056,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Összpontosítás közben az értesítések el vannak némítva eddig: <ph name="TIME" /></translation> +<translation id="7901010467630324625">Csak a(z) <ph name="EMAIL" /> fiókba bejelentkezett eszközök</translation> <translation id="7901190436359881020">Az ablakok felcserélése</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Érintse meg az ujjlenyomat-érzékelőt</translation>
diff --git a/ash/strings/ash_strings_id.xtb b/ash/strings/ash_strings_id.xtb index d9bef147..5d007e1f 100644 --- a/ash/strings/ash_strings_id.xtb +++ b/ash/strings/ash_strings_id.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">Tutup penyiapan untuk melihat foto, media, notifikasi, dan aplikasi terbaru ponsel Anda</translation> <translation id="4491109536499578614">Gambar</translation> <translation id="450584155212756404">Saluran Dev</translation> +<translation id="4513044611477939680">Quick Share</translation> <translation id="4513946894732546136">Masukan</translation> <translation id="4518404433291145981">Untuk membuka kunci Chromebook, buka kunci ponsel terlebih dahulu</translation> <translation id="4527045527269911712">Perangkat Bluetooth "<ph name="DEVICE_NAME" />" meminta izin untuk bersanding.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">Penghemat Baterai diaktifkan</translation> <translation id="4673427585974421255">Tetap aktifkan</translation> <translation id="4677040906536311086">Spreadsheet Google</translation> +<translation id="468019262817532242">Tidak ada yang dapat berbagi dengan Anda</translation> <translation id="468293128311738995">Aplikasi dari ponsel Anda</translation> <translation id="4690510401873698237">Rak di bagian bawah</translation> <translation id="4696813013609194136">Buka kunci perangkat dengan kode orang tua</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016">Sandi untuk <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="4777825441726637019">Play Store</translation> <translation id="4778095205580009397">Asisten Google tidak tersedia dalam sesi demo.</translation> +<translation id="4785412405516449976">Hanya kontak Anda yang memiliki Akun Google</translation> <translation id="4789348252524569426">Tidak dapat menginstal file ucapan. Perangkat perlu diupdate. Mulai ulang perangkat lalu coba lagi.</translation> <translation id="478959186716341421">Mentransmisi</translation> <translation id="4798403412327076414">Jendela dan aplikasi yang dibuka sebelumnya akan ditampilkan saat Anda login lagi</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">Rekam sebagian layar</translation> <translation id="5187627942836026988">Tampilkan detail hotspot. Hotspot diblokir oleh administrator Anda.</translation> <translation id="5197255632782567636">Internet</translation> +<translation id="5198039720391525849">GIF Unggulan</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> acara</translation> <translation id="5198715732953550718"><ph name="MOVED_APP_NAME" /> digabungkan dengan <ph name="IN_PLACE_APP" /> untuk membuat folder baru.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">Muat ulang halaman aktif</translation> <translation id="6200515304866777730">Tidak didukung oleh aplikasi</translation> <translation id="6210042900243040400">Hubungkan <ph name="NAME" /> yang sebelumnya disimpan ke <ph name="EMAIL" /></translation> +<translation id="6212580734499190393">Selama 10 mnt</translation> <translation id="6213808132343683860">Ambil screenshot atau rekaman layar sebagian</translation> <translation id="621606890568890214">Luaskan Google Classroom</translation> <translation id="6216759484154215561">Link pelajari lebih lanjut dibuka di browser</translation> @@ -1953,6 +1958,7 @@ <translation id="7599378375976398913">Menyisipkan hasil yang dipilih</translation> <translation id="7600875258240007829">Lihat semua notifikasi</translation> <translation id="7601417191446344542">Aktifkan pengingat aktifkan mikrofon?</translation> +<translation id="7602187221150705972">Telusuri emoji, GIF, dan lainnya</translation> <translation id="7607002721634913082">Dijeda</translation> <translation id="7609951632080598826">Tampilan kalender, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">Kamera dihubungkan kembali.</translation> @@ -2049,6 +2055,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Notifikasi dibisukan hingga pukul <ph name="TIME" /> saat fokus</translation> +<translation id="7901010467630324625">Hanya perangkat yang login ke <ph name="EMAIL" /></translation> <translation id="7901190436359881020">Tukar jendela</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Sentuh sensor sidik jari</translation>
diff --git a/ash/strings/ash_strings_is.xtb b/ash/strings/ash_strings_is.xtb index 9707104..5a6258f 100644 --- a/ash/strings/ash_strings_is.xtb +++ b/ash/strings/ash_strings_is.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">Hafna að setja upp skoðun nýlegra mynda, efnis, tilkynninga og forrita í símanum</translation> <translation id="4491109536499578614">Mynd</translation> <translation id="450584155212756404">Forritararás</translation> +<translation id="4513044611477939680">Flýtideiling</translation> <translation id="4513946894732546136">Ábendingar</translation> <translation id="4518404433291145981">Taktu símann þinn fyrst úr lás áður en þú tekur Chromebook úr lás</translation> <translation id="4527045527269911712">Bluetooth-tækið „<ph name="DEVICE_NAME" />“ vill fá heimild til að parast.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">Kveikt á rafhlöðusparnaði</translation> <translation id="4673427585974421255">Hafa kveikt</translation> <translation id="4677040906536311086">Google-töflureiknir</translation> +<translation id="468019262817532242">Enginn getur deilt með þér</translation> <translation id="468293128311738995">Forrit úr símanum</translation> <translation id="4690510401873698237">Hilla neðst</translation> <translation id="4696813013609194136">Opna tæki með kóða foreldris</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016">Aðgangsorð fyrir <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="4777825441726637019">Play Store</translation> <translation id="4778095205580009397">Google-hjálparinn er ekki í boði í prufuútgáfu.</translation> +<translation id="4785412405516449976">Aðeins tengiliðir þínir með Google-reikning</translation> <translation id="4789348252524569426">Ekki er hægt að setja upp raddskrár. Þú þarft að uppfæra tækið. Endurræstu tækið og reyndu aftur.</translation> <translation id="478959186716341421">Sendir út</translation> <translation id="4798403412327076414">Þú sérð glugga og forrit sem voru opin við næstu innskráningu</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">Upptaka á hluta skjás</translation> <translation id="5187627942836026988">Sýna upplýsingar um heitan reit. Kerfisstjórinn hefur lokað á heita reitinn.</translation> <translation id="5197255632782567636">Internet</translation> +<translation id="5198039720391525849">Valdar GIF-myndir</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> viðburðir</translation> <translation id="5198715732953550718"><ph name="MOVED_APP_NAME" /> var sameinað við <ph name="IN_PLACE_APP" /> til að búa til nýja möppu.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">Endurhlaða þessa síðu</translation> <translation id="6200515304866777730">Ekki stutt af forriti</translation> <translation id="6210042900243040400">Tengdu <ph name="NAME" />, sem áður var vistað á <ph name="EMAIL" /></translation> +<translation id="6212580734499190393">Í 10 mín.</translation> <translation id="6213808132343683860">Taka skjámynd eða skjáupptöku af hluta skjás</translation> <translation id="621606890568890214">Stækka Google Classroom</translation> <translation id="6216759484154215561">Opnaði tengilinn „Nánar“ í vafranum</translation> @@ -1953,6 +1958,7 @@ <translation id="7599378375976398913">Setur inn valda niðurstöðu</translation> <translation id="7600875258240007829">Sjá allar tilkynningar</translation> <translation id="7601417191446344542">Kveikja á áminningu um að virkja hljóðnema?</translation> +<translation id="7602187221150705972">Leita að emoji, GIF og fleira</translation> <translation id="7607002721634913082">Hlé</translation> <translation id="7609951632080598826">Dagatalsyfirlit, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">Myndavél tengd aftur.</translation> @@ -2049,6 +2055,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Tilkynningar eru þaggaðar til <ph name="TIME" /> á meðan einbeitingar er þörf</translation> +<translation id="7901010467630324625">Aðeins tæki sem eru innskráð á <ph name="EMAIL" /></translation> <translation id="7901190436359881020">Víxla gluggum</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Snertu fingrafaralesarann</translation>
diff --git a/ash/strings/ash_strings_kk.xtb b/ash/strings/ash_strings_kk.xtb index 4a15499..5b80f03 100644 --- a/ash/strings/ash_strings_kk.xtb +++ b/ash/strings/ash_strings_kk.xtb
@@ -429,7 +429,7 @@ <translation id="2487915095798731898">Қосылу</translation> <translation id="2496180316473517155">Шолу журналы</translation> <translation id="2499445554382787206">Жұмыс үстелі профилінің мәзірі. <ph name="DESK_NAME" /></translation> -<translation id="2501920221385095727">Жабысқақ пернелер</translation> +<translation id="2501920221385095727">Жабысқан пернелер</translation> <translation id="2504454902900101003">Телефондағы соңғы фотосуреттерді, медиафайлдарды және хабарландыруларды көру мүмкіндігін реттеуден бас тарту</translation> <translation id="2505378917951323738">Тапсырма өңделмеді. Онлайн болғанда қайталап көріңіз.</translation> <translation id="2509468283778169019">CAPS LOCK қосулы</translation>
diff --git a/ash/strings/ash_strings_km.xtb b/ash/strings/ash_strings_km.xtb index 15d02c6b..caead74 100644 --- a/ash/strings/ash_strings_km.xtb +++ b/ash/strings/ash_strings_km.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">ច្រានចោលការរៀបចំការមើលរូបថត មេឌៀ ការជូនដំណឹង និងកម្មវិធីថ្មីៗលើទូរសព្ទរបស់អ្នក</translation> <translation id="4491109536499578614">រូបភាព</translation> <translation id="450584155212756404">បណ្តាញអ្នកអភិវឌ្ឍន៍</translation> +<translation id="4513044611477939680">Quick Share</translation> <translation id="4513946894732546136">មតិ</translation> <translation id="4518404433291145981">ដើម្បីដោះសោ Chromebook របស់អ្នក សូមដោះសោទូរសព្ទរបស់អ្នកជាមុនសិន</translation> <translation id="4527045527269911712">ឧបករណ៍ប៊្លូធូស "<ph name="DEVICE_NAME" />" ចង់សុំការអនុញ្ញាតដើម្បីភ្ជាប់។</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">បានបើកមុខងារសន្សំថ្ម</translation> <translation id="4673427585974421255">បន្តបើក</translation> <translation id="4677040906536311086">បញ្ជី Google</translation> +<translation id="468019262817532242">គ្មាននរណាម្នាក់អាចចែករំលែកជាមួយអ្នកបានទេ</translation> <translation id="468293128311738995">កម្មវិធីពីទូរសព្ទរបស់អ្នក</translation> <translation id="4690510401873698237">ធ្នើនៅខាងក្រោម</translation> <translation id="4696813013609194136">ដោះសោឧបករណ៍ដោយប្រើកូដសម្រាប់មាតាបិតា</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016">ពាក្យសម្ងាត់សម្រាប់ <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="4777825441726637019">Play Store</translation> <translation id="4778095205580009397">Google ជំនួយការមិនអាចប្រើនៅក្នុងរយៈពេលចូលប្រើសាកល្បងបានទេ។</translation> +<translation id="4785412405516449976">មានតែទំនាក់ទំនងរបស់អ្នកដែលប្រើគណនី Google ប៉ុណ្ណោះ</translation> <translation id="4789348252524569426">មិនអាចដំឡើងឯកសារនៃការនិយាយបានទេ។ ឧបករណ៍របស់អ្នកត្រូវការធ្វើបច្ចុប្បន្នភាព។ សូមចាប់ផ្ដើមឧបករណ៍របស់អ្នកឡើងវិញ រួចព្យាយាមម្ដងទៀត។</translation> <translation id="478959186716341421">កំពុងខាស</translation> <translation id="4798403412327076414">អ្នកនឹងមើលឃើញកម្មវិធី និងវិនដូដែលបានបើកពីមុន នៅពេលអ្នកចូលគណនីលើកក្រោយ</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">ថតវីដេអូអេក្រង់ដោយផ្នែក</translation> <translation id="5187627942836026988">បង្ហាញព័ត៌មានលម្អិតអំពីហតស្ប៉ត។ ហតស្ប៉តត្រូវបានទប់ស្កាត់ដោយអ្នកគ្រប់គ្រងរបស់អ្នក។</translation> <translation id="5197255632782567636">អ៊ីនធឺណិត</translation> +<translation id="5198039720391525849">GIF រំលេចពិសេស</translation> <translation id="5198413532174090167">ថ្ងៃទី <ph name="DATE" />, ព្រឹត្តិការណ៍ <ph name="NUMBER" /></translation> <translation id="5198715732953550718"><ph name="MOVED_APP_NAME" /> ត្រូវបានរួមបញ្ចូលជាមួយ <ph name="IN_PLACE_APP" /> ដើម្បីបង្កើតថតថ្មី។</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />៖ <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">ដំណើរការទំព័របច្ចុប្បន្នឡើងវិញ</translation> <translation id="6200515304866777730">មិនអាចប្រើបានដោយកម្មវិធី</translation> <translation id="6210042900243040400">ភ្ជាប់ <ph name="NAME" /> ដែលបានរក្សាទុកពីមុនទៅ <ph name="EMAIL" /></translation> +<translation id="6212580734499190393">រយៈពេល 10 នាទី</translation> <translation id="6213808132343683860">ថតវីដេអូអេក្រង់ ឬរូបអេក្រង់មួយផ្នែក</translation> <translation id="621606890568890214">ពង្រីក Google ថ្នាក់រៀន</translation> <translation id="6216759484154215561">បានបើកតំណស្វែងយល់បន្ថែមនៅក្នុងកម្មវិធីរុករកតាមអ៊ីនធឺណិត</translation> @@ -1952,6 +1957,7 @@ <translation id="7599378375976398913">កំពុងបញ្ចូលលទ្ធផលដែលបានជ្រើសរើស</translation> <translation id="7600875258240007829">មើលការជូនដំណឹងទាំងអស់</translation> <translation id="7601417191446344542">បើកការរំលឹកប្រាប់ថាបិទសំឡេងឬ?</translation> +<translation id="7602187221150705972">ស្វែងរករូបអារម្មណ៍, GIF និងអ្វីៗជាច្រើនទៀត</translation> <translation id="7607002721634913082">បានផ្អាក</translation> <translation id="7609951632080598826">ទិដ្ឋភាពប្រតិទិន, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">បានភ្ជាប់កាមេរ៉ាឡើងវិញ។</translation> @@ -2048,6 +2054,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">ការជូនដំណឹងត្រូវបានបិទរហូតដល់ម៉ោង <ph name="TIME" /> នៅពេលផ្ដោតអារម្មណ៍</translation> +<translation id="7901010467630324625">មានតែឧបករណ៍ដែលចូលគណនី <ph name="EMAIL" /> ប៉ុណ្ណោះ</translation> <translation id="7901190436359881020">ប្ដូរវិនដូ</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">ប៉ះសេនស័រចាប់ស្នាមម្រាមដៃ</translation>
diff --git a/ash/strings/ash_strings_ko.xtb b/ash/strings/ash_strings_ko.xtb index 4e51c444..3637e56 100644 --- a/ash/strings/ash_strings_ko.xtb +++ b/ash/strings/ash_strings_ko.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">휴대전화의 최근 사진, 미디어, 알림, 앱 보기 설정 닫기</translation> <translation id="4491109536499578614">이미지</translation> <translation id="450584155212756404">개발자 채널</translation> +<translation id="4513044611477939680">Quick Share</translation> <translation id="4513946894732546136">문제 신고</translation> <translation id="4518404433291145981">Chromebook을 잠금 해제하려면 먼저 휴대전화를 잠금 해제하세요.</translation> <translation id="4527045527269911712">블루투스 기기 '<ph name="DEVICE_NAME" />'에서 페어링 허가를 요청합니다.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">절전 모드 사용 설정됨</translation> <translation id="4673427585974421255">계속 사용</translation> <translation id="4677040906536311086">Google 시트</translation> +<translation id="468019262817532242">나와 공유할 수 있는 사용자 없음</translation> <translation id="468293128311738995">휴대전화 앱</translation> <translation id="4690510401873698237">앱 표시줄 하단에 표시</translation> <translation id="4696813013609194136">부모 코드로 기기 잠금 해제</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" />의 비밀번호</translation> <translation id="4777825441726637019">Play 스토어</translation> <translation id="4778095205580009397">데모 세션에서는 Google 어시스턴트를 사용할 수 없습니다.</translation> +<translation id="4785412405516449976">내 주소록에 있는 Google 계정 사용자만</translation> <translation id="4789348252524569426">음성 파일을 설치할 수 없습니다. 기기를 업데이트해야 합니다. 기기를 재시작한 후 다시 시도해 보세요.</translation> <translation id="478959186716341421">전송</translation> <translation id="4798403412327076414">다음에 로그인하면 이전에 열었던 창과 앱이 표시됩니다.</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">화면 일부 녹화</translation> <translation id="5187627942836026988">핫스팟 세부정보를 표시합니다. 관리자가 핫스팟을 차단했습니다.</translation> <translation id="5197255632782567636">인터넷</translation> +<translation id="5198039720391525849">추천 GIF</translation> <translation id="5198413532174090167"><ph name="DATE" />, 일정 <ph name="NUMBER" />개</translation> <translation id="5198715732953550718"><ph name="MOVED_APP_NAME" /> 앱과 <ph name="IN_PLACE_APP" /> 앱이 포함된 새 폴더를 만들었습니다.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">현재 페이지 새로고침</translation> <translation id="6200515304866777730">앱에서 지원되지 않음</translation> <translation id="6210042900243040400">이전에 <ph name="EMAIL" />에 저장된 <ph name="NAME" /> 연결</translation> +<translation id="6212580734499190393">10분 동안</translation> <translation id="6213808132343683860">부분 스크린샷 찍기 또는 화면 녹화</translation> <translation id="621606890568890214">Google 클래스룸 펼치기</translation> <translation id="6216759484154215561">브라우저에서 자세히 알아보기 링크 열림</translation> @@ -1953,6 +1958,7 @@ <translation id="7599378375976398913">선택한 결과 삽입 중</translation> <translation id="7600875258240007829">모든 알림 보기</translation> <translation id="7601417191446344542">음소거 알림을 사용 설정하시겠습니까?</translation> +<translation id="7602187221150705972">이모티콘, GIF 등 검색</translation> <translation id="7607002721634913082">일시중지됨</translation> <translation id="7609951632080598826">캘린더 보기, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">카메라가 다시 연결되었습니다.</translation> @@ -2049,6 +2055,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">집중 모드를 사용하는 <ph name="TIME" />까지 알림이 음소거됩니다.</translation> +<translation id="7901010467630324625"><ph name="EMAIL" />에 로그인되어 있는 기기만</translation> <translation id="7901190436359881020">창 교체</translation> <translation id="7901405293566323524">휴대전화 허브</translation> <translation id="7902625623987030061">지문 센서를 터치하세요.</translation>
diff --git a/ash/strings/ash_strings_lo.xtb b/ash/strings/ash_strings_lo.xtb index f99b43e..86cab7a 100644 --- a/ash/strings/ash_strings_lo.xtb +++ b/ash/strings/ash_strings_lo.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">ປິດການຕັ້ງຄ່າການເບິ່ງຮູບພາບຫຼ້າສຸດ, ມີເດຍ, ການແຈ້ງເຕືອນ ແລະ ແອັບຂອງໂທລະສັບທ່ານໄວ້</translation> <translation id="4491109536499578614">ຮູບ</translation> <translation id="450584155212756404">ຊ່ອງຜູ້ພັດທະນາ</translation> +<translation id="4513044611477939680">ການແຊຣ໌ດ່ວນ</translation> <translation id="4513946894732546136">ຄໍາຄິດເຫັນ</translation> <translation id="4518404433291145981">ເພື່ອປົດລັອກ Chromebook ຂອງທ່ານ, ໃຫ້ປົດລັອກໂທລະສັບຂອງທ່ານ</translation> <translation id="4527045527269911712">ອຸປະກອນ Bluetooth "<ph name="DEVICE_NAME" />" ຢາກໄດ້ການອະນຸຍາດຈັບຄູ່.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">ເປີດໃຊ້ຕົວປະຢັດແບັດເຕີຣີແລ້ວ</translation> <translation id="4673427585974421255">ເປີດໄວ້</translation> <translation id="4677040906536311086">Google Sheet</translation> +<translation id="468019262817532242">ບໍ່ມີໃຜສາມາດແບ່ງປັນກັບທ່ານໄດ້</translation> <translation id="468293128311738995">ແອັບຈາກໂທລະສັບຂອງທ່ານ</translation> <translation id="4690510401873698237">ຊັ້ນວາງຢູ່ລຸ່ມສຸດ</translation> <translation id="4696813013609194136">ປົດລັອກອຸປະກອນດ້ວຍລະຫັດພໍ່ແມ່</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016">ລະຫັດຜ່ານສໍາລັບ <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="4777825441726637019">Play Store</translation> <translation id="4778095205580009397">ຜູ້ຊ່ວຍ Google ບໍ່ສາມາດໃຊ້ໄດ້ໃນເຊດຊັນສາທິດ.</translation> +<translation id="4785412405516449976">ສະເພາະລາຍຊື່ຜູ້ຕິດຕໍ່ຂອງທ່ານທີ່ມີບັນຊີ Google</translation> <translation id="4789348252524569426">ບໍ່ສາມາດຕິດຕັ້ງໄຟລ໌ສຽງເວົ້າໄດ້. ຕ້ອງອັບເດດອຸປະກອນຂອງທ່ານ. ກະລຸນາຣີສະຕາດອຸປະກອນຂອງທ່ານແລ້ວລອງໃໝ່.</translation> <translation id="478959186716341421">ກຳລັງຄາສທ໌</translation> <translation id="4798403412327076414">ທ່ານຈະເຫັນໜ້າຈໍ ແລະ ແອັບທີ່ເປີດຢູ່ກ່ອນໜ້ານີ້ເມື່ອທ່ານເຂົ້າສູ່ລະບົບເທື່ອຕໍ່ໄປ</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">ບັນທຶກໜ້າຈໍບາງສ່ວນ</translation> <translation id="5187627942836026988">ສະແດງລາຍລະອຽດຮັອດສະປອດ. ຮັອດສະປອດຖືກບລັອກໂດຍຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານ.</translation> <translation id="5197255632782567636">ອິນເຕີເນັດ</translation> +<translation id="5198039720391525849">GIF ເດັ່ນ</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> ນັດໝາຍ</translation> <translation id="5198715732953550718"><ph name="MOVED_APP_NAME" /> ຮວມກັນກັບ <ph name="IN_PLACE_APP" /> ເພື່ອສ້າງໂຟນເດີໃໝ່.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">ໂຫຼດໜ້າປະຈຸບັນຄືນໃໝ່</translation> <translation id="6200515304866777730">ແອັບບໍ່ຮອງຮັບ</translation> <translation id="6210042900243040400">ເຊື່ອມຕໍ່ <ph name="NAME" /> ທີ່ບັນທຶກໄວ້ກ່ອນໜ້ານີ້ໃສ່ <ph name="EMAIL" /></translation> +<translation id="6212580734499190393">ໄລຍະເວລາ 10 ນທ</translation> <translation id="6213808132343683860">ຖ່າຍຮູບໜ້າຈໍ ຫຼື ການບັນທຶກໜ້າຈໍບາງສ່ວນ</translation> <translation id="621606890568890214">ຂະຫຍາຍ Google ຫ້ອງຮຽນ</translation> <translation id="6216759484154215561">ເປີດລິ້ງສຶກສາເພີ່ມເຕີມໃນໂປຣແກຣມທ່ອງເວັບແລ້ວ</translation> @@ -1953,6 +1958,7 @@ <translation id="7599378375976398913">ການແຊກຜົນໄດ້ຮັບທີ່ເລືອກ</translation> <translation id="7600875258240007829">ເບິ່ງການແຈ້ງເຕືອນທັງໝົດ</translation> <translation id="7601417191446344542">ເປີດແຈ້ງເຕືອນໄມຖືກປິດບໍ?</translation> +<translation id="7602187221150705972">ຊອກຫາອີໂມຈິ, GIF ແລະ ອື່ນໆ</translation> <translation id="7607002721634913082">ຢຸດແລ້ວ</translation> <translation id="7609951632080598826">ມຸມມອງປະຕິທິນ, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">ເຊື່ອມຕໍ່ກ້ອງຖ່າຍຮູບຄືນໃໝ່ແລ້ວ.</translation> @@ -2049,6 +2055,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">ປິດສຽງການແຈ້ງເຕືອນຈົນຮອດ <ph name="TIME" /> ໃນລະຫວ່າງທີ່ກຳລັງໂຟກັສ</translation> +<translation id="7901010467630324625">ສະເພາະອຸປະກອນທີ່ເຂົ້າສູ່ລະບົບ <ph name="EMAIL" /></translation> <translation id="7901190436359881020">ສະຫຼັບໜ້າຈໍ</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">ແຕະເຊັນເຊີລາຍນິ້ວມື</translation>
diff --git a/ash/strings/ash_strings_ml.xtb b/ash/strings/ash_strings_ml.xtb index 3c50509..b7d1b357 100644 --- a/ash/strings/ash_strings_ml.xtb +++ b/ash/strings/ash_strings_ml.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">നിങ്ങളുടെ ഫോണിലെ പുതിയ ഫോട്ടോകളും മീഡിയയും അറിയിപ്പുകളും ആപ്പുകളും കാണുന്നത് സജ്ജീകരിക്കുന്നത് ഡിസ്മിസ് ചെയ്യുക</translation> <translation id="4491109536499578614">ചിത്രം</translation> <translation id="450584155212756404">Dev ചാനൽ</translation> +<translation id="4513044611477939680">ക്വിക്ക് ഷെയർ</translation> <translation id="4513946894732546136">ഫീഡ്ബാക്ക്</translation> <translation id="4518404433291145981">Chromebook അൺലോക്ക് ചെയ്യാൻ ആദ്യം നിങ്ങളുടെ ഫോൺ അൺലോക്ക് ചെയ്യുക</translation> <translation id="4527045527269911712">"<ph name="DEVICE_NAME" />" എന്ന Bluetooth ഉപകരണം ജോടിയാക്കുന്നതിനുള്ള അനുമതി ആവശ്യപ്പെടുന്നു.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">ബാറ്ററി സേവർ ഓണാക്കി</translation> <translation id="4673427585974421255">ഓണാക്കി വയ്ക്കുക</translation> <translation id="4677040906536311086">Google ഷീറ്റ്</translation> +<translation id="468019262817532242">ആർക്കും നിങ്ങളുമായി പങ്കിടാനാകില്ല</translation> <translation id="468293128311738995">ഫോണിലെ ആപ്പുകൾ</translation> <translation id="4690510401873698237">സ്ക്രീനിൻ്റെ ചുവടെയാണ് ഷെൽഫ്</translation> <translation id="4696813013609194136">രക്ഷാകർതൃ കോഡ് ഉപയോഗിച്ച് ഉപകരണം അൺലോക്ക് ചെയ്യുക</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" /> എന്നതിനായുള്ള പാസ്വേഡ്</translation> <translation id="4777825441726637019">Play Store</translation> <translation id="4778095205580009397">ഡെമോ സെഷനിൽ Google അസിസ്റ്റന്റ് ലഭ്യമല്ല.</translation> +<translation id="4785412405516449976">Google Account ഉള്ള നിങ്ങളുടെ കോൺടാക്റ്റുകൾക്ക് മാത്രം</translation> <translation id="4789348252524569426">സംഭാഷണ ഫയലുകൾ ഇൻസ്റ്റാൾ ചെയ്യാനാകുന്നില്ല. നിങ്ങളുടെ ഉപകരണം അപ്ഡേറ്റ് ചെയ്യേണ്ടതുണ്ട്. നിങ്ങളുടെ ഉപകരണം റീസ്റ്റാർട്ട് ചെയ്ത് വീണ്ടും ശ്രമിക്കുക.</translation> <translation id="478959186716341421">കാസ്റ്റുചെയ്യുന്നു</translation> <translation id="4798403412327076414">അടുത്ത തവണ സൈൻ ഇൻ ചെയ്യുമ്പോൾ, മുമ്പ് തുറന്ന് വിൻഡോകളും ആപ്പുകളും കാണാം</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">ഭാഗിക സ്ക്രീൻ റെക്കോർഡ് ചെയ്യുക</translation> <translation id="5187627942836026988">ഹോട്ട്സ്പോട്ട് വിശദാംശങ്ങൾ കാണിക്കുക. ഹോട്ട്സ്പോട്ട് നിങ്ങളുടെ അഡ്മിൻ ബ്ലോക്ക് ചെയ്തിരിക്കുന്നു.</translation> <translation id="5197255632782567636">ഇന്റര്നെറ്റ്</translation> +<translation id="5198039720391525849">ഫീച്ചർ ചെയ്യുന്ന GIF-കൾ</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> ഇവന്റുകൾ</translation> <translation id="5198715732953550718">പുതിയ ഫോൾഡർ സൃഷ്ടിക്കുന്നതിനായി <ph name="MOVED_APP_NAME" /> എന്നതിനെ <ph name="IN_PLACE_APP" /> എന്നതുമായി സംയോജിപ്പിച്ചു.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">നിലവിലെ പേജ് വീണ്ടും ലോഡുചെയ്യുക</translation> <translation id="6200515304866777730">ആപ്പ് പിന്തുണയ്ക്കുന്നില്ല</translation> <translation id="6210042900243040400"><ph name="EMAIL" /> എന്നതിലേക്ക് മുമ്പ് സംരക്ഷിച്ച <ph name="NAME" /> കണക്റ്റ് ചെയ്യുക</translation> +<translation id="6212580734499190393">10 മിനിറ്റ് നേരത്തേക്ക്</translation> <translation id="6213808132343683860">ഭാഗിക സ്ക്രീൻഷോട്ടോ സ്ക്രീൻ റെക്കോർഡിംഗോ എടുക്കുക</translation> <translation id="621606890568890214">Google Classroom വികസിപ്പിക്കുക</translation> <translation id="6216759484154215561">ബ്രൗസറിൽ 'കൂടുതലറിയുക' ലിങ്ക് തുറന്നു</translation> @@ -1954,6 +1959,7 @@ <translation id="7599378375976398913">തിരഞ്ഞെടുത്ത ഫലം ചേർക്കുന്നു</translation> <translation id="7600875258240007829">എല്ലാ അറിയിപ്പുകളും കാണുക</translation> <translation id="7601417191446344542">മ്യൂട്ടാണെന്ന അറിയിപ്പ് ഓണാക്കണോ?</translation> +<translation id="7602187221150705972">ഇമോജികൾ, GIF-കൾ എന്നിവയും മറ്റും തിരയുക</translation> <translation id="7607002721634913082">അല്പംനിര്ത്തി</translation> <translation id="7609951632080598826">കലണ്ടർ കാഴ്ച, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">ക്യാമറ വീണ്ടും കണക്റ്റ് ചെയ്തു.</translation> @@ -2050,6 +2056,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">ഫോക്കസ് ചെയ്യുമ്പോൾ <ph name="TIME" /> വരെ അറിയിപ്പുകൾ മ്യൂട്ട് ചെയ്യുന്നു</translation> +<translation id="7901010467630324625"><ph name="EMAIL" /> എന്നതിലേക്ക് സൈൻ ഇൻ ചെയ്ത ഉപകരണങ്ങൾ മാത്രം</translation> <translation id="7901190436359881020">വിൻഡോകൾ സ്വാപ്പ് ചെയ്യുക</translation> <translation id="7901405293566323524">ഫോൺ ഹബ്</translation> <translation id="7902625623987030061">ഫിംഗർപ്രിന്റ് സെൻസർ സ്പർശിക്കുക</translation>
diff --git a/ash/strings/ash_strings_mn.xtb b/ash/strings/ash_strings_mn.xtb index c3b0fb7..a9968ab 100644 --- a/ash/strings/ash_strings_mn.xtb +++ b/ash/strings/ash_strings_mn.xtb
@@ -1029,6 +1029,7 @@ <translation id="4485506555414638855">Утасныхаа саяхны зураг, медиа, мэдэгдэл болон аппуудыг харахыг тохируулахыг үл хэрэгсэх</translation> <translation id="4491109536499578614">Зураг</translation> <translation id="450584155212756404">Dev суваг</translation> +<translation id="4513044611477939680">Түргэн хуваалцах</translation> <translation id="4513946894732546136">Санал дүгнэлт</translation> <translation id="4518404433291145981">Chromebook-нхээ түгжээг тайлахын тулд эхлээд утасныхаа түгжээг тайлна уу</translation> <translation id="4527045527269911712">"<ph name="DEVICE_NAME" />" Bluetooth төхөөрөмж хослох зөвшөөрөл хүсч байна.</translation> @@ -1080,6 +1081,7 @@ <translation id="4672539464599646374">Батарей хэмнэгчийг асаасан</translation> <translation id="4673427585974421255">Асаалттай үлдээх</translation> <translation id="4677040906536311086">Google Хүснэгт</translation> +<translation id="468019262817532242">Хэн ч тантай хуваалцах боломжгүй</translation> <translation id="468293128311738995">Таны утасны аппууд</translation> <translation id="4690510401873698237">Доор байгаа shelf</translation> <translation id="4696813013609194136">Төхөөрөмжийн түгжээг эцэг эхийн кодоор тайлна уу</translation> @@ -1111,6 +1113,7 @@ <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" />-ийн нууц үг</translation> <translation id="4777825441726637019">Play Store</translation> <translation id="4778095205580009397">Google Туслах туршилтын харилцан үйлдэлд боломжгүй байна.</translation> +<translation id="4785412405516449976">Зөвхөн таны Google Бүртгэлтэй харилцагчид</translation> <translation id="4789348252524569426">Ярианы файлуудыг суулгах боломжгүй. Та төхөөрөмжөө шинэчлэх шаардлагатай. Төхөөрөмжөө дахин эхлүүлээд, дахин оролдоно уу.</translation> <translation id="478959186716341421">Каст хийх</translation> <translation id="4798403412327076414">Та дараагийн удаа нэвтрэхдээ өмнө нь нээгдсэн цонх, аппуудыг харах болно</translation> @@ -1240,6 +1243,7 @@ <translation id="5176318573511391780">Хэсэгчилсэн дэлгэцийг бичих</translation> <translation id="5187627942836026988">Сүлжээний цэгийн дэлгэрэнгүйг харуулна уу. Сүлжээний цэгийг танай администратор блоклосон.</translation> <translation id="5197255632782567636">Интернэт</translation> +<translation id="5198039720391525849">Онцолсон GIF-үүд</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> үйл явдал</translation> <translation id="5198715732953550718">Шинэ фолдер үүсгэхийн тулд <ph name="MOVED_APP_NAME" />-г <ph name="IN_PLACE_APP" />-тай цуг нийлүүлсэн.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1561,6 +1565,7 @@ <translation id="6199775032047436064">Одоогийн хуудсыг дахин ачаалах</translation> <translation id="6200515304866777730">Аппаас дэмждэггүй</translation> <translation id="6210042900243040400">Өмнө нь <ph name="EMAIL" />-д хадгалсан <ph name="NAME" />-г холбоно уу</translation> +<translation id="6212580734499190393">10 минутын турш</translation> <translation id="6213808132343683860">Дэлгэцийн хэсэгчилсэн агшин авах эсвэл дэлгэцийн үйлдэл бичих</translation> <translation id="621606890568890214">Google Classroom-г дэлгэх</translation> <translation id="6216759484154215561">Хөтчид нэмэлт мэдээлэл авах холбоосыг нээсэн</translation> @@ -1954,6 +1959,7 @@ <translation id="7599378375976398913">Сонгосон илэрцийг оруулж байна</translation> <translation id="7600875258240007829">Бүх мэдэгдлийг харах</translation> <translation id="7601417191446344542">Дуу хаалттай тухай мэдэгдлийг асаах уу?</translation> +<translation id="7602187221150705972">Эможи, GIF болон бусад зүйлийг хайх</translation> <translation id="7607002721634913082">зогссон</translation> <translation id="7609951632080598826">Календарийн харагдах байдал, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">Камер дахин холбогдсон.</translation> @@ -2050,6 +2056,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Төвлөрч байхад мэдэгдлийн дууг <ph name="TIME" /> хүртэл хаасан</translation> +<translation id="7901010467630324625">Зөвхөн <ph name="EMAIL" />-д нэвтэрсэн төхөөрөмжүүд</translation> <translation id="7901190436359881020">Цонхнуудыг солих</translation> <translation id="7901405293566323524">Утасны Hub</translation> <translation id="7902625623987030061">Хурууны хээ мэдрэгчид хүрнэ үү</translation>
diff --git a/ash/strings/ash_strings_ms.xtb b/ash/strings/ash_strings_ms.xtb index afd91478..7444b402 100644 --- a/ash/strings/ash_strings_ms.xtb +++ b/ash/strings/ash_strings_ms.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">Menolak penyediaan pemaparan foto, media, pemberitahuan dan apl terbaharu telefon anda</translation> <translation id="4491109536499578614">Imej</translation> <translation id="450584155212756404">Saluran Pembangunan</translation> +<translation id="4513044611477939680">Quick Share</translation> <translation id="4513946894732546136">Maklum balas</translation> <translation id="4518404433291145981">Untuk membuka kunci Chromebook anda, buka kunci telefon anda dahulu</translation> <translation id="4527045527269911712">Peranti Bluetooth "<ph name="DEVICE_NAME" />" ingin kebenaran untuk berpasangan.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">Penjimat Bateri dihidupkan</translation> <translation id="4673427585974421255">Biar hidup</translation> <translation id="4677040906536311086">Helaian Google</translation> +<translation id="468019262817532242">Tiada sesiapa boleh berkongsi dengan anda</translation> <translation id="468293128311738995">Apl daripada telefon anda</translation> <translation id="4690510401873698237">Rak di bahagian bawah</translation> <translation id="4696813013609194136">Buka kunci peranti menggunakan kod ibu bapa</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016">Kata laluan untuk <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="4777825441726637019">Gedung Play</translation> <translation id="4778095205580009397">Google Assistant tidak tersedia dalam sesi tunjuk cara.</translation> +<translation id="4785412405516449976">Hanya kenalan anda yang mempunyai Google Account</translation> <translation id="4789348252524569426">Tidak boleh memasang fail pertuturan. Peranti anda perlu dikemas kini. Mulakan semula peranti anda dan cuba lagi.</translation> <translation id="478959186716341421">Menghantar</translation> <translation id="4798403412327076414">Anda akan melihat tetingkap dan apl yang dibuka sebelumnya pada log masuk yang seterusnya</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">Rakam skrin separa</translation> <translation id="5187627942836026988">Tunjukkan butiran tempat liputan. Tempat liputan disekat oleh pentadbir anda.</translation> <translation id="5197255632782567636">Internet</translation> +<translation id="5198039720391525849">GIF yang ditampilkan</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> acara</translation> <translation id="5198715732953550718"><ph name="MOVED_APP_NAME" /> digabungkan dengan <ph name="IN_PLACE_APP" /> untuk membuat folder baharu.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">Muatkan semula halaman semasa</translation> <translation id="6200515304866777730">Tidak disokong oleh apl</translation> <translation id="6210042900243040400">Sambungkan <ph name="NAME" /> yang disimpan sebelum ini di <ph name="EMAIL" /></translation> +<translation id="6212580734499190393">Selama 10 min</translation> <translation id="6213808132343683860">Ambil tangkapan skrin separa atau rakaman skrin</translation> <translation id="621606890568890214">Kembangkan Google Classroom</translation> <translation id="6216759484154215561">Pautan ketahui lebih lanjut yang dibuka dalam penyemak imbas</translation> @@ -1953,6 +1958,7 @@ <translation id="7599378375976398913">Menyisipkan hasil carian yang dipilih</translation> <translation id="7600875258240007829">Lihat semua pemberitahuan</translation> <translation id="7601417191446344542">Hidupkan pemberitahuan redam?</translation> +<translation id="7602187221150705972">Cari emoji, GIF dan pelbagai lagi</translation> <translation id="7607002721634913082">Dijeda</translation> <translation id="7609951632080598826">Paparan kalendar, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">Kamera disambung semula.</translation> @@ -2049,6 +2055,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Pemberitahuan diredam hingga <ph name="TIME" /> semasa memberikan tumpuan</translation> +<translation id="7901010467630324625">Hanya peranti yang log masuk ke <ph name="EMAIL" /></translation> <translation id="7901190436359881020">Tukar tetingkap</translation> <translation id="7901405293566323524">Hab Telefon</translation> <translation id="7902625623987030061">Sentuh penderia cap jari</translation>
diff --git a/ash/strings/ash_strings_my.xtb b/ash/strings/ash_strings_my.xtb index 8a1ebed..436edc4 100644 --- a/ash/strings/ash_strings_my.xtb +++ b/ash/strings/ash_strings_my.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">သင့်ဖုန်းရှိ မကြာသေးမီက ဓာတ်ပုံ၊ မီဒီယာ၊ အကြောင်းကြားချက်နှင့် အက်ပ်များ ကြည့်ရှုမှုအတွက် စနစ်ထည့်သွင်းခြင်းကို ပယ်ရန်</translation> <translation id="4491109536499578614">ပုံ</translation> <translation id="450584155212756404">တိုးတက်မှုချန်နယ်</translation> +<translation id="4513044611477939680">အမြန်မျှဝေပါ</translation> <translation id="4513946894732546136">အကြံပြုချက်</translation> <translation id="4518404433291145981">သင့် Chromebook ကို လော့ခ်ဖွင့်ရန် သင့်ဖုန်းကို ဦးစွာ လော့ခ်ဖွင့်ပါ</translation> <translation id="4527045527269911712">ဘလူးတုသ် ကိရိယာ "<ph name="DEVICE_NAME" />" က ချိတ်တွဲရန် ခွင့်ပြုချက် ရယူလိုသည်။</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">‘ဘက်ထရီ အားထိန်း’ ဖွင့်ထားသည်</translation> <translation id="4673427585974421255">ဖွင့်ထားရန်</translation> <translation id="4677040906536311086">Google Sheet</translation> +<translation id="468019262817532242">မည်သူမျှ သင်နှင့်မျှဝေ၍မရပါ</translation> <translation id="468293128311738995">သင့်ဖုန်းမှအက်ပ်များ</translation> <translation id="4690510401873698237">စင်ကို အောက်ခြေသို့ ရွှေ့လိုက်ပါပြီ</translation> <translation id="4696813013609194136">စက်ပစ္စည်းကို မိဘသုံးကုဒ်ဖြင့် ဖွင့်ပါ</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" />အတွက် စကားဝှက်</translation> <translation id="4777825441726637019">Play စတိုး</translation> <translation id="4778095205580009397">သရုပ်ပြစက်ရှင်တွင် Google Assistant မရနိုင်ပါ။</translation> +<translation id="4785412405516449976">Google Account ရှိသော သင့်အဆက်အသွယ်များသာ</translation> <translation id="4789348252524569426">စကားပြောဖိုင်များ ထည့်သွင်း၍မရပါ။ သင့်စက်ကို အပ်ဒိတ်လုပ်ရမည်။ သင့်စက်ကို ပြန်စပြီး ထပ်စမ်းကြည့်ပါ။</translation> <translation id="478959186716341421">ကာစ်တ်လုပ်ခြင်း</translation> <translation id="4798403412327076414">နောက်တစ်ခေါက် လက်မှတ်ထိုးဝင်သောအခါ ယခင်ဖွင့်ထားသော ဝင်းဒိုးနှင့် အက်ပ်များကို မြင်ရမည်</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">ဖန်သားပြင်တစ်စိတ်တစ်ပိုင်းကို ရိုက်ကူးရန်</translation> <translation id="5187627942836026988">ဟော့စပေါ့အသေးစိတ် ပြသည်။ ဟော့စပေါ့ကို သင့်စီမံခန့်ခွဲသူက ပိတ်ထားသည်။</translation> <translation id="5197255632782567636">အင်တာနက်</translation> +<translation id="5198039720391525849">အထူးဖော်ပြထားသော GIF များ</translation> <translation id="5198413532174090167"><ph name="DATE" />၊ အစီအစဉ် <ph name="NUMBER" /> ခု</translation> <translation id="5198715732953550718">ဖိုင်တွဲအသစ်ပြုလုပ်ရန် <ph name="MOVED_APP_NAME" /> သည် <ph name="IN_PLACE_APP" /> နှင့် ပေါင်းစည်းထားသည်။</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />၊ <ph name="NOTIFICATION_TITLE" />- <ph name="MESSAGE" />၊ <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">လက်ရှိ စာမျက်နှာကို ပြန်ဖွင့်ရန်</translation> <translation id="6200515304866777730">အက်ပ်က ပံ့ပိုးမထားပါ</translation> <translation id="6210042900243040400">ယခင်က <ph name="EMAIL" /> သို့ သိမ်းထားသော <ph name="NAME" /> သို့ ချိတ်ဆက်ပါ</translation> +<translation id="6212580734499190393">၁၀ မိနစ်ကြာ</translation> <translation id="6213808132343683860">ဖန်သားပြင်ဓာတ်ပုံ (သို့) ဖန်သားပြင်ရိုက်ကူးမှု တစ်စိတ်တစ်ပိုင်း ရယူရန်</translation> <translation id="621606890568890214">Google Classroom ကို ပိုပြပါ</translation> <translation id="6216759484154215561">ဘရောင်ဇာတွင် ပိုမိုလေ့လာရန်လင့်ခ် ဖွင့်လိုက်ပါပြီ</translation> @@ -1953,6 +1958,7 @@ <translation id="7599378375976398913">ရွေးထားသော ရလဒ်ကို ထည့်ခြင်း</translation> <translation id="7600875258240007829">အကြောင်းကြားချက်အားလုံးကို ကြည့်ရန်</translation> <translation id="7601417191446344542">အသံပိတ်နေကြောင်း အသိပေးချက်ကို ဖွင့်မလား။</translation> +<translation id="7602187221150705972">အီမိုဂျီ၊ GIF စသည်တို့ကို ရှာပါ</translation> <translation id="7607002721634913082">ဆိုင်းငံ့ထား</translation> <translation id="7609951632080598826">ပြက္ခဒိန်ပြသခြင်း၊ <ph name="DATE" />၊ <ph name="TIME" /></translation> <translation id="7611213136657090146">ကင်မရာကို ပြန်လည်ချိတ်ဆက်ထားသည်။</translation> @@ -2049,6 +2055,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">အာရုံပြုနေစဉ် <ph name="TIME" /> အထိ အကြောင်းကြားချက်များကို အသံပိတ်သည်</translation> +<translation id="7901010467630324625"><ph name="EMAIL" /> သို့ လက်မှတ်ထိုးဝင်ထားသော စက်များသာ</translation> <translation id="7901190436359881020">ဝင်းဒိုးများ ပြောင်းရန်</translation> <translation id="7901405293566323524">ဖုန်းပင်မ</translation> <translation id="7902625623987030061">လက်ဗွေအာရုံခံကိရိယာကို ထိပါ</translation>
diff --git a/ash/strings/ash_strings_nl.xtb b/ash/strings/ash_strings_nl.xtb index 176c42b..796a789 100644 --- a/ash/strings/ash_strings_nl.xtb +++ b/ash/strings/ash_strings_nl.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">Instellen van de weergave van recente foto's, media, meldingen en apps van je telefoon sluiten</translation> <translation id="4491109536499578614">Afbeelding</translation> <translation id="450584155212756404">Dev-kanaal</translation> +<translation id="4513044611477939680">Quick Share</translation> <translation id="4513946894732546136">Feedback</translation> <translation id="4518404433291145981">Ontgrendel eerst je telefoon om je Chromebook te ontgrendelen</translation> <translation id="4527045527269911712">Bluetooth-apparaat '<ph name="DEVICE_NAME" />' wil rechten om te koppelen.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">Batterijbesparing staat aan</translation> <translation id="4673427585974421255">Aan laten</translation> <translation id="4677040906536311086">Google-spreadsheet</translation> +<translation id="468019262817532242">Niemand kan met jou delen</translation> <translation id="468293128311738995">Apps op je telefoon</translation> <translation id="4690510401873698237">Plank aan onderkant</translation> <translation id="4696813013609194136">Apparaat ontgrendelen met oudercode</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016">Wachtwoord voor <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="4777825441726637019">Play Store</translation> <translation id="4778095205580009397">De Google Assistent is niet beschikbaar in een demosessie.</translation> +<translation id="4785412405516449976">Alleen je contacten met een Google-account</translation> <translation id="4789348252524569426">Kan spraakbestanden niet installeren. Je apparaat moet worden geüpdatet. Start het apparaat opnieuw op en probeer het nogmaals.</translation> <translation id="478959186716341421">Casten</translation> <translation id="4798403412327076414">Je ziet eerder geopende vensters en apps als je de volgende keer inlogt</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">Opname van gedeeltelijk scherm maken</translation> <translation id="5187627942836026988">Toon de hotspotdetails. Hotspot wordt geblokkeerd door je beheerder.</translation> <translation id="5197255632782567636">Internet</translation> +<translation id="5198039720391525849">Aanbevolen gifjes</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> afspraken</translation> <translation id="5198715732953550718"><ph name="MOVED_APP_NAME" /> is gecombineerd met <ph name="IN_PLACE_APP" /> om een nieuwe map te maken.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">De huidige pagina opnieuw laden</translation> <translation id="6200515304866777730">Niet ondersteund door app</translation> <translation id="6210042900243040400">Verbinding maken met <ph name="NAME" /> (eerder opgeslagen in <ph name="EMAIL" />)</translation> +<translation id="6212580734499190393">10 min</translation> <translation id="6213808132343683860">Gedeeltelijk screenshot of schermopname maken</translation> <translation id="621606890568890214">Google Classroom uitvouwen</translation> <translation id="6216759484154215561">Link Meer informatie geopend in de browser</translation> @@ -1953,6 +1958,7 @@ <translation id="7599378375976398913">Geselecteerd resultaat invoegen</translation> <translation id="7600875258240007829">Alle meldingen bekijken</translation> <translation id="7601417191446344542">Melding dat microfoon is gedempt aanzetten?</translation> +<translation id="7602187221150705972">Zoek naar emoji's, gifjes en meer</translation> <translation id="7607002721634913082">Onderbroken</translation> <translation id="7609951632080598826">Agendaweergave, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">Camera opnieuw verbonden.</translation> @@ -2049,6 +2055,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Meldingen worden verborgen tot <ph name="TIME" /> terwijl je je focust</translation> +<translation id="7901010467630324625">Alleen apparaten die zijn ingelogd bij <ph name="EMAIL" /></translation> <translation id="7901190436359881020">De vensters omwisselen</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Raak de vingerafdruksensor aan</translation>
diff --git a/ash/strings/ash_strings_no.xtb b/ash/strings/ash_strings_no.xtb index a0baed0..bdc25c3 100644 --- a/ash/strings/ash_strings_no.xtb +++ b/ash/strings/ash_strings_no.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">Lukk konfigurering av visning av nylige bilder, medier, varsler og apper fra telefonen din</translation> <translation id="4491109536499578614">Bilde</translation> <translation id="450584155212756404">Utviklerkanal</translation> +<translation id="4513044611477939680">Quick Share</translation> <translation id="4513946894732546136">Google Feedback</translation> <translation id="4518404433291145981">For å låse opp Chromebooken, lås opp telefonen først</translation> <translation id="4527045527269911712">Bluetooth-enheten «<ph name="DEVICE_NAME" />» ber om tillatelse til å koble til.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">Batterisparing er slått på</translation> <translation id="4673427585974421255">Behold på</translation> <translation id="4677040906536311086">Google-regneark</translation> +<translation id="468019262817532242">Ingen kan dele med deg</translation> <translation id="468293128311738995">Apper fra telefonen din</translation> <translation id="4690510401873698237">Hyllen er nederst</translation> <translation id="4696813013609194136">Lås opp enheten med foreldrekode</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016">Passord for <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="4777825441726637019">Play Butikk</translation> <translation id="4778095205580009397">Google-assistenten er ikke tilgjengelig under demonstrasjonsøkter.</translation> +<translation id="4785412405516449976">Bare kontaktene dine med Google-konto</translation> <translation id="4789348252524569426">Kan ikke installere talefiler. Enheten må oppdateres. Start enheten på nytt, og prøv igjen.</translation> <translation id="478959186716341421">Caster</translation> <translation id="4798403412327076414">Du ser tidligere åpnede vinduer og apper neste gang du logger på</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">Ta opp en del av skjermen</translation> <translation id="5187627942836026988">Vis detaljer for wifi-sonen. Administratoren din har blokkert wifi-soner.</translation> <translation id="5197255632782567636">Internett</translation> +<translation id="5198039720391525849">Fremhevede GIF-er</translation> <translation id="5198413532174090167"><ph name="DATE" /> – <ph name="NUMBER" /> hendelser</translation> <translation id="5198715732953550718"><ph name="MOVED_APP_NAME" /> er kombinert med <ph name="IN_PLACE_APP" /> for å opprette en ny mappe.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">Laster inn gjeldende side på nytt</translation> <translation id="6200515304866777730">Støttes ikke av appen</translation> <translation id="6210042900243040400">Koble til <ph name="NAME" /> som tidligere har blitt lagret i <ph name="EMAIL" /></translation> +<translation id="6212580734499190393">i 10 minutter</translation> <translation id="6213808132343683860">Ta delvis skjermbilde eller skjermopptak</translation> <translation id="621606890568890214">Vis Google Classroom</translation> <translation id="6216759484154215561">Åpnet Finn ut mer-linken i nettleseren</translation> @@ -1953,6 +1958,7 @@ <translation id="7599378375976398913">Setter inn det valgte resultatet</translation> <translation id="7600875258240007829">Se alle varslene</translation> <translation id="7601417191446344542">Vil du slå på varsler om avslått mikrofon?</translation> +<translation id="7602187221150705972">Søk etter emojier, GIF-er med mer</translation> <translation id="7607002721634913082">Satt på pause</translation> <translation id="7609951632080598826">Kalendervisning, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">Kameraet er koblet til igjen.</translation> @@ -2049,6 +2055,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Varsler ignoreres frem til <ph name="TIME" /> mens du fokuserer</translation> +<translation id="7901010467630324625">Bare enheter som er logget på <ph name="EMAIL" /></translation> <translation id="7901190436359881020">Bytt vinduer</translation> <translation id="7901405293566323524">Telefonstyring</translation> <translation id="7902625623987030061">Trykk på fingeravtrykkssensoren</translation>
diff --git a/ash/strings/ash_strings_or.xtb b/ash/strings/ash_strings_or.xtb index 478bc871..60271d2 100644 --- a/ash/strings/ash_strings_or.xtb +++ b/ash/strings/ash_strings_or.xtb
@@ -1672,7 +1672,7 @@ <translation id="6593850935013518327"><ph name="PRIMARY_TEXT" />, <ph name="SECONDARY_TEXT" /></translation> <translation id="6597278316891651699">କ୍ୟାମେରାକୁ ନିମ୍ନ ବାମପାର୍ଶ୍ୱ କୋଣକୁ ସ୍ନାପ କରାଯାଇଛି। ସିଷ୍ଟମ ସର୍ଫେସ ସହ ବିବାଦ।</translation> <translation id="6605415194043280389">ଫୋକସ ମୋଡ ଚାଲୁ ଅଛି</translation> -<translation id="660846213831377756">ମାଉସ କୀଗୁଡ଼ିକ</translation> +<translation id="660846213831377756">ମାଉସ କୀ</translation> <translation id="661203523074512333"><ph name="SECURITY_STATUS" />, ସିଗ୍ନାଲ୍ର କ୍ଷମତା <ph name="SIGNAL_STRENGTH" />, ଆପଣଙ୍କର ଆଡ୍ମିନିଷ୍ଟ୍ରେଟର୍ଙ୍କ ଦ୍ୱାରା ପରିଚାଳିତ</translation> <translation id="6612802754306526077">ସ୍କ୍ରିନ୍ ରେକର୍ଡିଂ ମୋଡକୁ ଚୟନ କରାଯାଇଛି</translation> <translation id="6612889377159412215">ସବଟାସ୍କ</translation>
diff --git a/ash/strings/ash_strings_pa.xtb b/ash/strings/ash_strings_pa.xtb index 4ea1091..e490be5 100644 --- a/ash/strings/ash_strings_pa.xtb +++ b/ash/strings/ash_strings_pa.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">ਆਪਣੇ ਫ਼ੋਨ ਦੀਆਂ ਹਾਲੀਆ ਫ਼ੋਟੋਆਂ, ਮੀਡੀਆ, ਸੂਚਨਾਵਾਂ ਅਤੇ ਐਪਾਂ ਨੂੰ ਦੇਖਣ ਦਾ ਸੈੱਟਅੱਪ ਕਰਨਾ ਖਾਰਜ ਕਰੋ</translation> <translation id="4491109536499578614">ਚਿੱਤਰ</translation> <translation id="450584155212756404">ਡੈਵ ਚੈਨਲ</translation> +<translation id="4513044611477939680">ਕਵਿੱਕ ਸ਼ੇਅਰ</translation> <translation id="4513946894732546136">ਵਿਚਾਰ</translation> <translation id="4518404433291145981">ਆਪਣੀ Chromebook ਨੂੰ ਅਣਲਾਕ ਕਰਨ ਲਈ ਪਹਿਲਾ ਆਪਣੇ ਫ਼ੋਨ ਨੂੰ ਅਣਲਾਕ ਕਰੋ</translation> <translation id="4527045527269911712">ਬਲੂਟੁੱਥ ਡੀਵਾਈਸ "<ph name="DEVICE_NAME" />" ਜੋੜਾਬੱਧ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਚਾਹੁੰਦੀ ਹੈ।</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">ਬੈਟਰੀ ਸੇਵਰ ਚਾਲੂ ਹੈ</translation> <translation id="4673427585974421255">ਚਾਲੂ ਰੱਖੋ</translation> <translation id="4677040906536311086">Google ਸ਼ੀਟ</translation> +<translation id="468019262817532242">ਕੋਈ ਵੀ ਵਿਅਕਤੀ ਤੁਹਾਡੇ ਨਾਲ ਸਾਂਝਾ ਨਹੀਂ ਕਰ ਸਕਦਾ</translation> <translation id="468293128311738995">ਤੁਹਾਡੇ ਫ਼ੋਨ ਤੋਂ ਐਪਾਂ</translation> <translation id="4690510401873698237">ਹੇਠਲੇ 'ਤੇ ਸ਼ੈਲਫ਼</translation> <translation id="4696813013609194136">ਮਾਂ-ਪਿਓ ਦੇ ਕੋਡ ਨਾਲ ਡੀਵਾਈਸ ਅਣਲਾਕ ਕਰੋ</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" /> ਲਈ ਪਾਸਵਰਡ</translation> <translation id="4777825441726637019">Play Store</translation> <translation id="4778095205580009397">ਡੈਮੋ ਸੈਸ਼ਨ ਵਿੱਚ Google Assistant ਉਪਲਬਧ ਨਹੀਂ ਹੁੰਦਾ ਹੈ।</translation> +<translation id="4785412405516449976">ਸਿਰਫ਼ ਤੁਹਾਡੇ ਉਹ ਸੰਪਰਕ, ਜਿਨ੍ਹਾਂ ਕੋਲ Google ਖਾਤਾ ਹੋਵੇ</translation> <translation id="4789348252524569426">ਬੋਲੀ ਫ਼ਾਈਲਾਂ ਨੂੰ ਸਥਾਪਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ। ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਦੀ ਲੋੜ ਹੈ। ਆਪਣੇ ਡੀਵਾਈਸ ਨੂੰ ਮੁੜ-ਸ਼ੁਰੂ ਕਰ ਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> <translation id="478959186716341421">ਕਾਸਟ ਕਰਨਾ</translation> <translation id="4798403412327076414">ਅਗਲੀ ਵਾਰ ਤੁਹਾਡੇ ਵੱਲੋਂ ਸਾਈਨ-ਇਨ ਕਰਨ 'ਤੇ ਤੁਹਾਨੂੰ ਉਹ ਵਿੰਡੋਆਂ ਅਤੇ ਐਪਾਂ ਦਿਸਣਗੀਆਂ ਜਿਨ੍ਹਾਂ ਨੂੰ ਤੁਸੀਂ ਪਹਿਲਾਂ ਖੋਲ੍ਹਿਆ ਸੀ</translation> @@ -1240,6 +1243,7 @@ <translation id="5176318573511391780">ਅੰਸ਼ਕ ਸਕ੍ਰੀਨ ਨੂੰ ਰਿਕਾਰਡ ਕਰੋ</translation> <translation id="5187627942836026988">ਹੌਟਸਪੌਟ ਦੇ ਵੇਰਵੇ ਦੇਖੋ। ਹੌਟਸਪੌਟ ਨੂੰ ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਬਲਾਕ ਕੀਤਾ ਗਿਆ ਹੈ।</translation> <translation id="5197255632782567636">ਇੰਟਰਨੈਟ</translation> +<translation id="5198039720391525849">ਚੋਣਵੇਂ GIF</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> ਇਵੈਂਟ</translation> <translation id="5198715732953550718">ਨਵਾਂ ਫੋਲਡਰ ਬਣਾਉਣ ਲਈ <ph name="MOVED_APP_NAME" /> ਨੂੰ <ph name="IN_PLACE_APP" /> ਨਾਲ ਮਿਲਾਇਆ ਜਾਂਦਾ ਹੈ।</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1561,6 +1565,7 @@ <translation id="6199775032047436064">ਮੌਜੂਦਾ ਪੰਨਾ ਰੀਲੋਡ ਕਰੋ</translation> <translation id="6200515304866777730">ਐਪ ਰਾਹੀਂ ਸਮਰਥਿਤ ਨਹੀਂ</translation> <translation id="6210042900243040400"><ph name="EMAIL" /> ਵਿੱਚ ਪਹਿਲਾਂ ਤੋਂ ਰੱਖਿਅਤ ਕੀਤੇ <ph name="NAME" /> ਨੂੰ ਕਨੈਕਟ ਕਰੋ</translation> +<translation id="6212580734499190393">10 ਮਿੰਟ ਲਈ</translation> <translation id="6213808132343683860">ਅੰਸ਼ਕ ਸਕ੍ਰੀਨਸ਼ਾਟ ਲਓ ਜਾਂ ਸਕ੍ਰੀਨ ਰਿਕਾਰਡਿੰਗ ਕਰੋ</translation> <translation id="621606890568890214">Google Classroom ਦਾ ਵਿਸਤਾਰ ਕਰੋ</translation> <translation id="6216759484154215561">ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ 'ਹੋਰ ਜਾਣੋ' ਖੋਲ੍ਹਿਆ ਗਿਆ</translation> @@ -1954,6 +1959,7 @@ <translation id="7599378375976398913">ਚੁਣਿਆ ਗਿਆ ਨਤੀਜਾ ਸ਼ਾਮਲ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ</translation> <translation id="7600875258240007829">ਸਾਰੀਆਂ ਸੂਚਨਾਵਾਂ ਦੇਖੋ</translation> <translation id="7601417191446344542">ਕੀ ਮਿਊਟ ਰਿਮਾਈਂਡਰ ਨੂੰ ਚਾਲੂ ਕਰਨਾ ਹੈ?</translation> +<translation id="7602187221150705972">ਇਮੋਜੀ, GIF ਅਤੇ ਹੋਰ ਚੀਜ਼ਾਂ ਖੋਜੋ</translation> <translation id="7607002721634913082">ਰੋਕਿਆ ਗਿਆ</translation> <translation id="7609951632080598826">ਕੈਲੰਡਰ ਦ੍ਰਿਸ਼, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">ਕੈਮਰੇ ਨੂੰ ਮੁੜ-ਕਨੈਕਟ ਕੀਤਾ ਗਿਆ।</translation> @@ -2050,6 +2056,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">ਫੋਕਸ ਮੋਡ ਚਾਲੂ ਹੋਣ ਕਰਕੇ, ਸੂਚਨਾਵਾਂ <ph name="TIME" /> ਤੱਕ ਮਿਊਟ ਹਨ</translation> +<translation id="7901010467630324625">ਸਿਰਫ਼ <ph name="EMAIL" /> ਨਾਲ ਸਾਈਨ-ਇਨ ਕੀਤੇ ਗਏ ਡੀਵਾਈਸਾਂ 'ਤੇ</translation> <translation id="7901190436359881020">ਵਿੰਡੋਆਂ ਨੂੰ ਸਵੈਪ ਕਰੋ</translation> <translation id="7901405293566323524">ਫ਼ੋਨ ਹੱਬ</translation> <translation id="7902625623987030061">ਫਿੰਗਰਪ੍ਰਿੰਟ ਸੈਂਸਰ ਨੂੰ ਸਪਰਸ਼ ਕਰੋ</translation>
diff --git a/ash/strings/ash_strings_ru.xtb b/ash/strings/ash_strings_ru.xtb index 97e5b5e0..7122b968 100644 --- a/ash/strings/ash_strings_ru.xtb +++ b/ash/strings/ash_strings_ru.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">Не настраивать просмотр недавних фотографий, медиафайлов, уведомлений и приложений с телефона</translation> <translation id="4491109536499578614">Изображение</translation> <translation id="450584155212756404">Версия для разработчиков</translation> +<translation id="4513044611477939680">Быстрая отправка</translation> <translation id="4513946894732546136">Отзыв</translation> <translation id="4518404433291145981">Чтобы разблокировать Chromebook, сначала разблокируйте телефон.</translation> <translation id="4527045527269911712">Устройству <ph name="DEVICE_NAME" /> требуется разрешение на подключение через Bluetooth.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">Режим энергосбережения включен.</translation> <translation id="4673427585974421255">Оставить</translation> <translation id="4677040906536311086">Таблица Google</translation> +<translation id="468019262817532242">Никто не может обмениваться с вами контентом</translation> <translation id="468293128311738995">Приложения на вашем телефоне</translation> <translation id="4690510401873698237">Временное хранилище размещено в нижней части экрана</translation> <translation id="4696813013609194136">Требуется родительский код доступа</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016">Пароль для адреса электронной почты <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="4777825441726637019">Play Маркет</translation> <translation id="4778095205580009397">Google Ассистент в демонстрационном сеансе недоступен</translation> +<translation id="4785412405516449976">Только ваши контакты, у которых есть аккаунт Google</translation> <translation id="4789348252524569426">Невозможно установить файлы для распознавания речи. Обновите операционную систему и перезапустите устройство, затем повторите попытку.</translation> <translation id="478959186716341421">Трансляция...</translation> <translation id="4798403412327076414">При следующем входе в систему вы увидите ранее открытые окна и приложения.</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">Запись видео с части экрана</translation> <translation id="5187627942836026988">Показать сведения о точке доступа. Точка доступа заблокирована администратором.</translation> <translation id="5197255632782567636">Интернет</translation> +<translation id="5198039720391525849">Рекомендуем</translation> <translation id="5198413532174090167"><ph name="DATE" />, мероприятий: <ph name="NUMBER" /></translation> <translation id="5198715732953550718">Для создания папки были объединены приложения "<ph name="MOVED_APP_NAME" />" и "<ph name="IN_PLACE_APP" />".</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">Обновление страницы</translation> <translation id="6200515304866777730">Не поддерживается приложением</translation> <translation id="6210042900243040400">Можно подключиться к устройству <ph name="NAME" />, которое уже сохранено в аккаунте <ph name="EMAIL" />.</translation> +<translation id="6212580734499190393">В течение 10 минут</translation> <translation id="6213808132343683860">Сделать скриншот или запись видео с части экрана</translation> <translation id="621606890568890214">Показать информацию из Google Класса</translation> <translation id="6216759484154215561">Страница по ссылке "Подробнее" открыта в браузере</translation> @@ -1673,7 +1678,7 @@ <translation id="6593850935013518327"><ph name="PRIMARY_TEXT" />, <ph name="SECONDARY_TEXT" /></translation> <translation id="6597278316891651699">Окно предварительного просмотра камеры привязано к левому нижнему углу, так как перекрывало элементы системного интерфейса</translation> <translation id="6605415194043280389">Режим концентрации внимания включен</translation> -<translation id="660846213831377756">Кнопки мыши</translation> +<translation id="660846213831377756">Клавиши управления мышью</translation> <translation id="661203523074512333">Статус защиты – "<ph name="SECURITY_STATUS" />", уровень сигнала – <ph name="SIGNAL_STRENGTH" />, под управлением администратора</translation> <translation id="6612802754306526077">Выбран режим записи видео с экрана</translation> <translation id="6612889377159412215">подзадача</translation> @@ -1953,6 +1958,7 @@ <translation id="7599378375976398913">Вставить выбранный результат</translation> <translation id="7600875258240007829">Показать все уведомления</translation> <translation id="7601417191446344542">Напоминать включить микрофон?</translation> +<translation id="7602187221150705972">Поиск эмодзи, GIF и не только</translation> <translation id="7607002721634913082">Приостановлен</translation> <translation id="7609951632080598826">Календарь: <ph name="TIME" />, <ph name="DATE" /></translation> <translation id="7611213136657090146">Камера переподключена.</translation> @@ -2049,6 +2055,7 @@ <ph name="IME" />. <ph name="LOCALE" />.</translation> <translation id="7899977217122813285">Уведомления отключены до <ph name="TIME" />, пока вы в режиме концентрации внимания.</translation> +<translation id="7901010467630324625">Только устройства, на которых выполнен вход в аккаунт <ph name="EMAIL" /></translation> <translation id="7901190436359881020">Поменять окна местами</translation> <translation id="7901405293566323524">Управление телефоном</translation> <translation id="7902625623987030061">Коснитесь сканера отпечатков.</translation>
diff --git a/ash/strings/ash_strings_sk.xtb b/ash/strings/ash_strings_sk.xtb index 64fa15a..aff9adb 100644 --- a/ash/strings/ash_strings_sk.xtb +++ b/ash/strings/ash_strings_sk.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">Zrušiť nastavovanie zobrazovania nedávnych fotiek, médií, upozornení a aplikácií z telefónu</translation> <translation id="4491109536499578614">Obrázok</translation> <translation id="450584155212756404">Verzia pre vývojárov</translation> +<translation id="4513044611477939680">Quick Share</translation> <translation id="4513946894732546136">Spätná väzba</translation> <translation id="4518404433291145981">Ak chcete Chromebook odomknúť, najprv odomknite telefón</translation> <translation id="4527045527269911712">Zariadenie Bluetooth s názvom <ph name="DEVICE_NAME" /> žiada o povolenie párovania.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">Bol zapnutý šetrič batérie</translation> <translation id="4673427585974421255">Nevypínať</translation> <translation id="4677040906536311086">Tabuľka Google</translation> +<translation id="468019262817532242">Nikto s vami nemôže zdieľať</translation> <translation id="468293128311738995">Aplikácie z telefónu</translation> <translation id="4690510401873698237">Polička dolu</translation> <translation id="4696813013609194136">Odomknutie zariadenia kódom rodiča</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016">Heslo pre účet <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="4777825441726637019">Obchod Play</translation> <translation id="4778095205580009397">Asistent Google nie je k dispozícii v relácii ukážky.</translation> +<translation id="4785412405516449976">Iba vaše kontakty s účtom Google</translation> <translation id="4789348252524569426">Rečové súbory sa nedajú nainštalovať. Zariadenie je potrebné aktualizovať. Reštartujte zariadenie a skúste to znova.</translation> <translation id="478959186716341421">Prenáša sa</translation> <translation id="4798403412327076414">Pri ďalšom prihlásení sa zobrazia v minulosti otvorené okná a aplikácie</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">Nahrať časť obrazovky</translation> <translation id="5187627942836026988">Zobraziť podrobnosti o hotspote Hotspot zablokoval váš správca.</translation> <translation id="5197255632782567636">Internet</translation> +<translation id="5198039720391525849">Vybrané gify</translation> <translation id="5198413532174090167"><ph name="DATE" />, udalosti: <ph name="NUMBER" /></translation> <translation id="5198715732953550718"><ph name="MOVED_APP_NAME" /> spolu s aplikáciou <ph name="IN_PLACE_APP" /> vytvorili nový priečinok.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">Opätovné načítanie aktuálnej stránky</translation> <translation id="6200515304866777730">Aplikácia to nepodporuje</translation> <translation id="6210042900243040400">Pripojte zariadenie <ph name="NAME" />, ktoré bolo v minulosti uložené v účte <ph name="EMAIL" /></translation> +<translation id="6212580734499190393">Na 10 min</translation> <translation id="6213808132343683860">Vytvorenie čiastočnej snímky obrazovky alebo záznamu obrazovky</translation> <translation id="621606890568890214">Rozbaliť Učebňu Google</translation> <translation id="6216759484154215561">V prehliadači bol otvorený odkaz na ďalšie informácie</translation> @@ -1953,6 +1958,7 @@ <translation id="7599378375976398913">Vkladá sa vybraný výsledok</translation> <translation id="7600875258240007829">Zobraziť všetky upozornenia</translation> <translation id="7601417191446344542">Chcete zapnúť upozornenia na vypnutý mikrofón?</translation> +<translation id="7602187221150705972">Hľadajte emodži, gify a ďalší obsah</translation> <translation id="7607002721634913082">Pozastavené</translation> <translation id="7609951632080598826">Zobrazenie kalendára, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">Kamera bola odpojená</translation> @@ -2049,6 +2055,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">V čase na sústredenie sú upozornenia stlmené do <ph name="TIME" /></translation> +<translation id="7901010467630324625">Iba zariadenia s prihláseným účtom <ph name="EMAIL" /></translation> <translation id="7901190436359881020">Vymeniť okná</translation> <translation id="7901405293566323524">Telefónne centrum</translation> <translation id="7902625623987030061">Dotknite sa senzora odtlačkov prstov</translation>
diff --git a/ash/strings/ash_strings_sl.xtb b/ash/strings/ash_strings_sl.xtb index c28a9e4..72159f2 100644 --- a/ash/strings/ash_strings_sl.xtb +++ b/ash/strings/ash_strings_sl.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">Opustitev nastavitve ogleda nedavnih fotografij, predstavnosti, obvestil in aplikacij telefona</translation> <translation id="4491109536499578614">Slika</translation> <translation id="450584155212756404">Različica za razvijalce</translation> +<translation id="4513044611477939680">Hitro deljenje</translation> <translation id="4513946894732546136">Povratne informacije</translation> <translation id="4518404433291145981">Če želite odkleniti Chromebook, najprej odklenite telefon.</translation> <translation id="4527045527269911712">Naprava Bluetooth »<ph name="DEVICE_NAME" />« želi dovoljenje za seznanjanje.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">Varčevanje z energijo baterije je vklopljeno</translation> <translation id="4673427585974421255">Pusti vklopljeno</translation> <translation id="4677040906536311086">Google Preglednica</translation> +<translation id="468019262817532242">Nihče ne more deliti z vami</translation> <translation id="468293128311738995">Aplikacije iz telefona</translation> <translation id="4690510401873698237">Polica na dnu</translation> <translation id="4696813013609194136">Odklepanje naprave s kodo starša</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016">Geslo za <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="4777825441726637019">Trgovina Play</translation> <translation id="4778095205580009397">Pomočnik Google ni na voljo v predstavitveni seji.</translation> +<translation id="4785412405516449976">Samo stiki z računom Google</translation> <translation id="4789348252524569426">Datotek za govor ni mogoče namestiti. Napravo je treba posodobiti. Znova zaženite napravo in poskusite znova.</translation> <translation id="478959186716341421">Predvajanje</translation> <translation id="4798403412327076414">Ob naslednji prijavi bodo prikazana predhodno odprta okna in aplikacije</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">Snemanje delnega zaslona</translation> <translation id="5187627942836026988">Prikaz podrobnosti dostopne točke. Dostopno točko je blokiral skrbnik.</translation> <translation id="5197255632782567636">Internet</translation> +<translation id="5198039720391525849">Predstavljeni GIF-i</translation> <translation id="5198413532174090167"><ph name="DATE" />, dogodki (<ph name="NUMBER" />)</translation> <translation id="5198715732953550718">Zaradi ustvarjanja nove mape je bila aplikacija <ph name="MOVED_APP_NAME" /> združena z aplikacijo <ph name="IN_PLACE_APP" />.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">Znova naloži trenutno stran</translation> <translation id="6200515304866777730">Aplikacija ne podpira</translation> <translation id="6210042900243040400">Vzpostavite povezavo z napravo <ph name="NAME" />, ki je že shranjena v računu <ph name="EMAIL" />.</translation> +<translation id="6212580734499190393">Za 10 min</translation> <translation id="6213808132343683860">Ustvarjanje delnega posnetka zaslona ali snemanja zaslona</translation> <translation id="621606890568890214">Razširitev Učilnice Google</translation> <translation id="6216759484154215561">Odpiranje povezave za več informacij v brskalniku</translation> @@ -1953,6 +1958,7 @@ <translation id="7599378375976398913">Vstavljanje izbranega rezultata</translation> <translation id="7600875258240007829">Ogled vseh obvestil</translation> <translation id="7601417191446344542">Želite vklopiti obvestilo o izklopljenem mikrofonu?</translation> +<translation id="7602187221150705972">Iščite emodžije, GIF-e in drugo</translation> <translation id="7607002721634913082">Začasno ustavljeno</translation> <translation id="7609951632080598826">Pogled koledarja, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">Fotoaparat je znova povezan.</translation> @@ -2049,6 +2055,7 @@ <ph name="IME" />, <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Obvestila so med osredotočanjem utišana do <ph name="TIME" /></translation> +<translation id="7901010467630324625">Samo naprave, prijavljene v račun <ph name="EMAIL" /></translation> <translation id="7901190436359881020">Zamenjava oken</translation> <translation id="7901405293566323524">Središče za telefone</translation> <translation id="7902625623987030061">Dotaknite se tipala prstnih odtisov.</translation>
diff --git a/ash/strings/ash_strings_sv.xtb b/ash/strings/ash_strings_sv.xtb index d662b56..c27f8e14 100644 --- a/ash/strings/ash_strings_sv.xtb +++ b/ash/strings/ash_strings_sv.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">Ignorera att ställa in visning av de senaste bilderna, mediefilerna, aviseringarna och apparna på telefonen</translation> <translation id="4491109536499578614">Bild</translation> <translation id="450584155212756404">Kanal för utvecklare</translation> +<translation id="4513044611477939680">Snabbdelning</translation> <translation id="4513946894732546136">Feedback</translation> <translation id="4518404433291145981">Du måste först låsa upp telefonen om du vill låsa upp Chromebook</translation> <translation id="4527045527269911712">Bluetooth-enheten <ph name="DEVICE_NAME" /> har begärt tillstånd för koppling.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">Batterisparläget har aktiverats</translation> <translation id="4673427585974421255">Behåll på</translation> <translation id="4677040906536311086">Google-kalkylark</translation> +<translation id="468019262817532242">Ingen kan dela med dig</translation> <translation id="468293128311738995">Appar från telefonen</translation> <translation id="4690510401873698237">Hyllan längst ned</translation> <translation id="4696813013609194136">Lås upp enheten med föräldrakod</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016">Lösenord för <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="4777825441726637019">Play Butik</translation> <translation id="4778095205580009397">Google Assistent är inte tillgänglig i en demosession.</translation> +<translation id="4785412405516449976">Endast kontakter med ett Google-konto</translation> <translation id="4789348252524569426">Det gick inte att installera ljudfiler. Enheten måste uppdateras. Starta om enheten och försök igen.</translation> <translation id="478959186716341421">Castar</translation> <translation id="4798403412327076414">Nästa gång du loggar in ser du fönstren och apparna som tidigare var öppna</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">Spela in en del av skärmen</translation> <translation id="5187627942836026988">Visa information om surfzon. Surfzonen blockeras av administratören.</translation> <translation id="5197255632782567636">Internet</translation> +<translation id="5198039720391525849">Utvalda giffar</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> händelser</translation> <translation id="5198715732953550718"><ph name="MOVED_APP_NAME" /> kombinerades med <ph name="IN_PLACE_APP" /> för att skapa en ny mapp.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">Hämta aktuell sida igen</translation> <translation id="6200515304866777730">Stöds inte av appen</translation> <translation id="6210042900243040400">Anslut <ph name="NAME" /> som tidigare sparats i <ph name="EMAIL" /></translation> +<translation id="6212580734499190393">I 10 min</translation> <translation id="6213808132343683860">Ta en skärmbild eller skärminspelning av en del av skärmen</translation> <translation id="621606890568890214">Utöka Google Classroom</translation> <translation id="6216759484154215561">Länken Läs mer har öppnats i webbläsaren</translation> @@ -1953,6 +1958,7 @@ <translation id="7599378375976398913">Infogar valt resultat</translation> <translation id="7600875258240007829">Visa alla aviseringar</translation> <translation id="7601417191446344542">Aktivera påminnelse om att mikrofonen är avstängd?</translation> +<translation id="7602187221150705972">Sök efter emojis, giffar med mera</translation> <translation id="7607002721634913082">Pausad</translation> <translation id="7609951632080598826">Kalendervy: <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">Kameran har återanslutits.</translation> @@ -2049,6 +2055,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Ljudet är avstängt för aviseringar tills <ph name="TIME" /> medan du fokuserar</translation> +<translation id="7901010467630324625">Endast enheter som är inloggade på <ph name="EMAIL" /></translation> <translation id="7901190436359881020">Byt plats på fönstren</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Tryck på fingeravtryckssensorn</translation>
diff --git a/ash/strings/ash_strings_sw.xtb b/ash/strings/ash_strings_sw.xtb index 4e05a59..ba4952b5 100644 --- a/ash/strings/ash_strings_sw.xtb +++ b/ash/strings/ash_strings_sw.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">Ondoa kidokezo cha kuweka mipangilio ya kuangalia picha, maudhui, arifa na programu za hivi karibuni za simu yako</translation> <translation id="4491109536499578614">Picha</translation> <translation id="450584155212756404">Kituo Kinachoendelea Kujengwa</translation> +<translation id="4513044611477939680">Kutuma Haraka</translation> <translation id="4513946894732546136">Mwitiko</translation> <translation id="4518404433291145981">Ili ufungue Chromebook yako, fungua simu yako kwanza</translation> <translation id="4527045527269911712">Kifaa cha Bluetooth cha "<ph name="DEVICE_NAME" />" kinaomba idhini ya kuoanisha.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">Kiokoa Betri kimewashwa</translation> <translation id="4673427585974421255">Usizime</translation> <translation id="4677040906536311086">Jedwali la Google</translation> +<translation id="468019262817532242">Hakuna anayeweza kukutumia</translation> <translation id="468293128311738995">Programu zilizo kwenye simu yako</translation> <translation id="4690510401873698237">Rafu iko upande wa chini</translation> <translation id="4696813013609194136">Fungua kifaa ukitumia msimbo wa mzazi</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016">Nenosiri la <ph name="USER_EMAIL_ADDRESS" /></translation> <translation id="4777825441726637019">Duka la Google Play</translation> <translation id="4778095205580009397">Programu ya Mratibu wa Google haipatikani katika kipindi cha onyesho.</translation> +<translation id="4785412405516449976">Unaowasiliana nao pekee walio na Akaunti ya Google</translation> <translation id="4789348252524569426">Imeshindwa kusakinisha faili za matamshi. Unahitaji kusasisha kifaa chako. Zima kisha uwashe kifaa chako na ujaribu tena.</translation> <translation id="478959186716341421">Inatuma</translation> <translation id="4798403412327076414">Utaona programu na madirisha uliyofungua hapo awali utakapoingia katika akaunti wakati mwingine</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">Rekodi sehemu ya skrini</translation> <translation id="5187627942836026988">Onyesha maelezo ya mtandao pepe. Mtandao pepe umezuiwa na msimamizi wako.</translation> <translation id="5197255632782567636">Wavuti</translation> +<translation id="5198039720391525849">GIF Zilizoangaziwa</translation> <translation id="5198413532174090167"><ph name="DATE" />, matukio <ph name="NUMBER" /></translation> <translation id="5198715732953550718"><ph name="MOVED_APP_NAME" /> imewekwa pamoja na <ph name="IN_PLACE_APP" /> ili kufungua folda mpya.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">Pakia upya ukurasa wa sasa</translation> <translation id="6200515304866777730">Haitumiki kwenye programu</translation> <translation id="6210042900243040400">Unganisha <ph name="NAME" /> zilizohifadhiwa hapo awali kwenye <ph name="EMAIL" /></translation> +<translation id="6212580734499190393">Kwa dak 10</translation> <translation id="6213808132343683860">Piga picha ya skrini au rekodi sehemu ya skrini</translation> <translation id="621606890568890214">Panua Google Darasani</translation> <translation id="6216759484154215561">Imefungua kiungo cha kupata maelezo zaidi katika kivinjari</translation> @@ -1954,6 +1959,7 @@ <translation id="7599378375976398913">Inaweka tokeo ulilochagua</translation> <translation id="7600875258240007829">Angalia arifa zote</translation> <translation id="7601417191446344542">Ungependa kuwasha kikumbusho cha kuwasha maikrofoni?</translation> +<translation id="7602187221150705972">Tafuta emoji, GIF na mengineyo</translation> <translation id="7607002721634913082">Imepumzishwa</translation> <translation id="7609951632080598826">Mwonekano wa kalenda, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">Kamera imeunganishwa upya.</translation> @@ -2050,6 +2056,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Arifa huzimwa hadi <ph name="TIME" /> kipengele cha kumakinika kinapokuwa kimewashwa</translation> +<translation id="7901010467630324625">Vifaa ambavyo umetumia kuingia katika akaunti ya <ph name="EMAIL" /> pekee</translation> <translation id="7901190436359881020">Badilisha madirisha</translation> <translation id="7901405293566323524">Kitovu cha Simu</translation> <translation id="7902625623987030061">Gusa kitambua alama ya kidole</translation>
diff --git a/ash/strings/ash_strings_uz.xtb b/ash/strings/ash_strings_uz.xtb index 05275ca..f17c9b9 100644 --- a/ash/strings/ash_strings_uz.xtb +++ b/ash/strings/ash_strings_uz.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">Telefondagi oxirgi suratlar, media fayllar, bildirishnomalar va ilovalarni koʻrishni sozlash oynasini yopish</translation> <translation id="4491109536499578614">Tasvir</translation> <translation id="450584155212756404">Dasturchilar kanali</translation> +<translation id="4513044611477939680">Tezkor ulashuv</translation> <translation id="4513946894732546136">Fikr-mulohaza</translation> <translation id="4518404433291145981">Chromebook qulfini ochish uchun telefon qulfini yeching</translation> <translation id="4527045527269911712">“<ph name="DEVICE_NAME" />” qurilmasi Bluetooth orqali bog‘lanishga ruxsat so‘ramoqda.</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">Quvvat tejalishi yoqildi</translation> <translation id="4673427585974421255">Kerak emas</translation> <translation id="4677040906536311086">Google Sheet</translation> +<translation id="468019262817532242">Hech kim sizga ulasha olmaydi</translation> <translation id="468293128311738995">Telefondagi ilovalar</translation> <translation id="4690510401873698237">Javon pastda</translation> <translation id="4696813013609194136">Ota-ona kodi bilan qurilmani qulfdan chiqarish</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" /> e-pochtasi paroli</translation> <translation id="4777825441726637019">Play Market</translation> <translation id="4778095205580009397">Google Assistenti demo seansda ishlamaydi</translation> +<translation id="4785412405516449976">Faqat Google hisobi bor kontaktlarga</translation> <translation id="4789348252524569426">Nutq fayllari oʻrnatilmadi. Qurilma yangilanishi lozim. Qurilmani qayta ishga tushirib, yana urining.</translation> <translation id="478959186716341421">Translatsiya qilinmoqda</translation> <translation id="4798403412327076414">Avval ochilgan oynalar va ilovalar keyingi kirishda tiklanadi</translation> @@ -1239,6 +1242,7 @@ <translation id="5176318573511391780">Ekran qismini yozib olish</translation> <translation id="5187627942836026988">Hotspot axborotini ochish. Hotspot xizmatini administrator bloklagan.</translation> <translation id="5197255632782567636">Internet</translation> +<translation id="5198039720391525849">Qiziqarli GIF fayllar</translation> <translation id="5198413532174090167"><ph name="DATE" />, <ph name="NUMBER" /> ta tadbir</translation> <translation id="5198715732953550718"><ph name="MOVED_APP_NAME" /> va <ph name="IN_PLACE_APP" /> ilovalari yangi jildga birlashtirildi.</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />, <ph name="NOTIFICATION_TITLE" />: <ph name="MESSAGE" />, <ph name="PHONE_NAME" /></translation> @@ -1560,6 +1564,7 @@ <translation id="6199775032047436064">Joriy sahifani qayta yuklash</translation> <translation id="6200515304866777730">Ilovada ishlamaydi</translation> <translation id="6210042900243040400"><ph name="NAME" /> qurilmasini oldin saqlangan <ph name="EMAIL" /> hisobiga ulang</translation> +<translation id="6212580734499190393">10 daq</translation> <translation id="6213808132343683860">Qisman skrinshot olish yoki ekranni yozib olish</translation> <translation id="621606890568890214">Google Classrom maʼlumotlarini koʻrsatish</translation> <translation id="6216759484154215561">Batafsil axborot havolasi brauzerda ochildi</translation> @@ -1953,6 +1958,7 @@ <translation id="7599378375976398913">Tanlangan natija joylanmoqda</translation> <translation id="7600875258240007829">Barcha bildirishnomalarni ochish</translation> <translation id="7601417191446344542">Sukut bildirgisi yoqilsinmi?</translation> +<translation id="7602187221150705972">Emoji, GIF va boshqalarni qidiring</translation> <translation id="7607002721634913082">Vaqtincha to‘xtatildi</translation> <translation id="7609951632080598826">Taqvim shaklida, <ph name="DATE" />, <ph name="TIME" /></translation> <translation id="7611213136657090146">Kamera qayta ulandi.</translation> @@ -2049,6 +2055,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">Fokuslash vaqtida bildirishnomalar <ph name="TIME" /> gacha oʻchiriladi</translation> +<translation id="7901010467630324625">Faqat <ph name="EMAIL" /> hisobiga kirilgan qurilmalar</translation> <translation id="7901190436359881020">Oynalar joyini almashtirish</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">Barmoq izi skaneriga tegining</translation>
diff --git a/ash/strings/ash_strings_zh-CN.xtb b/ash/strings/ash_strings_zh-CN.xtb index f89df856..9117d61 100644 --- a/ash/strings/ash_strings_zh-CN.xtb +++ b/ash/strings/ash_strings_zh-CN.xtb
@@ -1027,6 +1027,7 @@ <translation id="4485506555414638855">取消设置查看手机中的近期照片、媒体内容、通知和应用</translation> <translation id="4491109536499578614">图片</translation> <translation id="450584155212756404">开发渠道</translation> +<translation id="4513044611477939680">快速分享</translation> <translation id="4513946894732546136">反馈</translation> <translation id="4518404433291145981">若要解锁 Chromebook,请先解锁您的手机</translation> <translation id="4527045527269911712">蓝牙设备“<ph name="DEVICE_NAME" />”需要配对许可。</translation> @@ -1078,6 +1079,7 @@ <translation id="4672539464599646374">省电模式已开启</translation> <translation id="4673427585974421255">保持开启状态</translation> <translation id="4677040906536311086">Google 表格</translation> +<translation id="468019262817532242">任何人都无法与您分享内容</translation> <translation id="468293128311738995">您手机中的应用</translation> <translation id="4690510401873698237">任务栏位于屏幕底部</translation> <translation id="4696813013609194136">使用家长访问代码解锁设备</translation> @@ -1109,6 +1111,7 @@ <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" /> 的密码</translation> <translation id="4777825441726637019">Play 商店</translation> <translation id="4778095205580009397">无法在演示会话中使用 Google 助理。</translation> +<translation id="4785412405516449976">仅限有 Google 账号的联系人</translation> <translation id="4789348252524569426">无法安装语音文件。您的设备需要更新。请重启设备,然后重试。</translation> <translation id="478959186716341421">正在投放</translation> <translation id="4798403412327076414">您下次登录时,会看到之前打开的窗口和应用</translation> @@ -1238,6 +1241,7 @@ <translation id="5176318573511391780">录制部分屏幕</translation> <translation id="5187627942836026988">显示热点详情。管理员已禁用热点。</translation> <translation id="5197255632782567636">互联网</translation> +<translation id="5198039720391525849">精选 GIF</translation> <translation id="5198413532174090167"><ph name="DATE" />,<ph name="NUMBER" /> 个事件</translation> <translation id="5198715732953550718">将“<ph name="MOVED_APP_NAME" />”和“<ph name="IN_PLACE_APP" />”移到一起创建了一个新文件夹。</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />,<ph name="NOTIFICATION_TITLE" />:<ph name="MESSAGE" />,<ph name="PHONE_NAME" /></translation> @@ -1558,6 +1562,7 @@ <translation id="6199775032047436064">重新加载当前网页</translation> <translation id="6200515304866777730">应用不支持</translation> <translation id="6210042900243040400">关联已保存到 <ph name="EMAIL" /> 的“<ph name="NAME" />”</translation> +<translation id="6212580734499190393">持续 10 分钟</translation> <translation id="6213808132343683860">截取局部屏幕或录屏</translation> <translation id="621606890568890214">展开 Google 课堂</translation> <translation id="6216759484154215561">已在浏览器中打开了解详情链接</translation> @@ -1951,6 +1956,7 @@ <translation id="7599378375976398913">插入所选结果</translation> <translation id="7600875258240007829">查看所有通知</translation> <translation id="7601417191446344542">是否开启静音提醒?</translation> +<translation id="7602187221150705972">搜索表情符号、GIF 等</translation> <translation id="7607002721634913082">已暂停</translation> <translation id="7609951632080598826">日历视图,<ph name="DATE" /> <ph name="TIME" /></translation> <translation id="7611213136657090146">已重新连接相机。</translation> @@ -2047,6 +2053,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">专注模式已开启,系统会在<ph name="TIME" /> 之前忽略通知</translation> +<translation id="7901010467630324625">仅限已登录 <ph name="EMAIL" /> 的设备</translation> <translation id="7901190436359881020">切换窗口</translation> <translation id="7901405293566323524">手机中心</translation> <translation id="7902625623987030061">请轻触指纹传感器</translation>
diff --git a/ash/strings/ash_strings_zh-HK.xtb b/ash/strings/ash_strings_zh-HK.xtb index 25f7eac..8c6cadb 100644 --- a/ash/strings/ash_strings_zh-HK.xtb +++ b/ash/strings/ash_strings_zh-HK.xtb
@@ -1028,6 +1028,7 @@ <translation id="4485506555414638855">取消設定睇手機最近嘅相、媒體、通知同應用程式</translation> <translation id="4491109536499578614">圖片</translation> <translation id="450584155212756404">開發人員版</translation> +<translation id="4513044611477939680">快速共享</translation> <translation id="4513946894732546136">意見反映</translation> <translation id="4518404433291145981">如要解鎖 Chromebook,請先解鎖手機</translation> <translation id="4527045527269911712">藍牙裝置「<ph name="DEVICE_NAME" />」要求配對權限。</translation> @@ -1079,6 +1080,7 @@ <translation id="4672539464599646374">已開啟「慳電模式」</translation> <translation id="4673427585974421255">保持開啟</translation> <translation id="4677040906536311086">Google 試算表</translation> +<translation id="468019262817532242">沒有人可與你分享內容</translation> <translation id="468293128311738995">手機應用程式</translation> <translation id="4690510401873698237">捷徑列喺螢幕個底度</translation> <translation id="4696813013609194136">使用家長驗證碼解鎖裝置</translation> @@ -1110,6 +1112,7 @@ <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" /> 的密碼</translation> <translation id="4777825441726637019">Play 商店</translation> <translation id="4778095205580009397">「Google 助理」不適用於示範工作階段。</translation> +<translation id="4785412405516449976">只限你的聯絡人 (必須擁有 Google 帳戶)</translation> <translation id="4789348252524569426">無法安裝語音檔案,裝置需要更新。請重新開機,然後再試一次。</translation> <translation id="478959186716341421">投放中</translation> <translation id="4798403412327076414">下次登入時,你會看到之前開啟的視窗和應用程式</translation> @@ -1238,6 +1241,7 @@ <translation id="5176318573511391780">錄影部分螢幕</translation> <translation id="5187627942836026988">顯示熱點詳情。管理員已封鎖熱點。</translation> <translation id="5197255632782567636">互聯網</translation> +<translation id="5198039720391525849">精選 GIF</translation> <translation id="5198413532174090167"><ph name="DATE" />,<ph name="NUMBER" /> 個活動</translation> <translation id="5198715732953550718">結合「<ph name="MOVED_APP_NAME" />」同「<ph name="IN_PLACE_APP" />」就可以建立新資料夾。</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />,<ph name="NOTIFICATION_TITLE" />:<ph name="MESSAGE" />,<ph name="PHONE_NAME" /></translation> @@ -1559,6 +1563,7 @@ <translation id="6199775032047436064">重新載入目前網頁</translation> <translation id="6200515304866777730">應用程式不支援</translation> <translation id="6210042900243040400">連線至 <ph name="EMAIL" /> 先前儲存的 <ph name="NAME" /></translation> +<translation id="6212580734499190393">10 分鐘</translation> <translation id="6213808132343683860">擷取部分螢幕截圖或進行部分螢幕錄影</translation> <translation id="621606890568890214">展開 Google Classroom</translation> <translation id="6216759484154215561">已在瀏覽器中開啟瞭解詳情連結</translation> @@ -1951,6 +1956,7 @@ <translation id="7599378375976398913">插入緊所揀嘅結果</translation> <translation id="7600875258240007829">查看所有通知</translation> <translation id="7601417191446344542">要使用「略過自動提醒」嗎?</translation> +<translation id="7602187221150705972">搜尋 Emoji、GIF 等內容</translation> <translation id="7607002721634913082">已暫停</translation> <translation id="7609951632080598826">日曆檢視,<ph name="DATE" />,<ph name="TIME" /></translation> <translation id="7611213136657090146">攝錄機已經重新連線。</translation> @@ -2047,6 +2053,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">「專注模式」已開啟,系統會在 <ph name="TIME" />前忽略通知</translation> +<translation id="7901010467630324625">只限已登入 <ph name="EMAIL" /> 的裝置</translation> <translation id="7901190436359881020">切換左右視窗位置</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">請輕觸指紋感應器</translation>
diff --git a/ash/strings/ash_strings_zh-TW.xtb b/ash/strings/ash_strings_zh-TW.xtb index 20a57428..f8ca222 100644 --- a/ash/strings/ash_strings_zh-TW.xtb +++ b/ash/strings/ash_strings_zh-TW.xtb
@@ -1025,6 +1025,7 @@ <translation id="4485506555414638855">取消以下設定:查看手機上最近的相片、媒體、通知和應用程式</translation> <translation id="4491109536499578614">圖片</translation> <translation id="450584155212756404">開發人員版</translation> +<translation id="4513044611477939680">快速分享</translation> <translation id="4513946894732546136">意見回饋</translation> <translation id="4518404433291145981">如要解鎖 Chromebook,請先解鎖手機</translation> <translation id="4527045527269911712">藍牙裝置「<ph name="DEVICE_NAME" />」要求配對權限。</translation> @@ -1076,6 +1077,7 @@ <translation id="4672539464599646374">省電模式已開啟</translation> <translation id="4673427585974421255">保持開啟</translation> <translation id="4677040906536311086">Google 試算表</translation> +<translation id="468019262817532242">沒有人可以與你分享內容</translation> <translation id="468293128311738995">你手機上的應用程式</translation> <translation id="4690510401873698237">在底部顯示檔案櫃</translation> <translation id="4696813013609194136">使用家長存取碼將裝置解鎖</translation> @@ -1107,6 +1109,7 @@ <translation id="4776917500594043016"><ph name="USER_EMAIL_ADDRESS" /> 的密碼</translation> <translation id="4777825441726637019">Play 商店</translation> <translation id="4778095205580009397">Google 助理不適用於示範工作階段。</translation> +<translation id="4785412405516449976">僅限擁有 Google 帳戶的聯絡人</translation> <translation id="4789348252524569426">無法安裝語音檔案,必須更新裝置。請重新啟動裝置,然後再試一次。</translation> <translation id="478959186716341421">投放中</translation> <translation id="4798403412327076414">下次登入時,系統會顯示先前開啟的視窗和應用程式</translation> @@ -1236,6 +1239,7 @@ <translation id="5176318573511391780">錄製部分螢幕畫面</translation> <translation id="5187627942836026988">顯示無線基地台詳細資料。系統管理員已封鎖無線基地台。</translation> <translation id="5197255632782567636">網際網路</translation> +<translation id="5198039720391525849">精選 GIF</translation> <translation id="5198413532174090167"><ph name="DATE" />,<ph name="NUMBER" /> 個活動</translation> <translation id="5198715732953550718">已將「<ph name="MOVED_APP_NAME" />」與「<ph name="IN_PLACE_APP" />」合併,並建立新資料夾。</translation> <translation id="5206028654245650022"><ph name="APP_NAME" />,<ph name="NOTIFICATION_TITLE" />:<ph name="MESSAGE" />,<ph name="PHONE_NAME" /></translation> @@ -1557,6 +1561,7 @@ <translation id="6199775032047436064">重新載入目前網頁</translation> <translation id="6200515304866777730">應用程式不支援這項功能</translation> <translation id="6210042900243040400">連線到 <ph name="EMAIL" /> 先前儲存的「<ph name="NAME" />」</translation> +<translation id="6212580734499190393">10 分鐘</translation> <translation id="6213808132343683860">擷取部分螢幕截圖或錄製部分螢幕畫面</translation> <translation id="621606890568890214">展開 Google Classroom</translation> <translation id="6216759484154215561">已在瀏覽器中開啟瞭解詳情連結</translation> @@ -1949,6 +1954,7 @@ <translation id="7599378375976398913">正在插入所選結果</translation> <translation id="7600875258240007829">查看所有通知</translation> <translation id="7601417191446344542">要開啟靜音提醒嗎?</translation> +<translation id="7602187221150705972">搜尋表情符號、GIF 等內容</translation> <translation id="7607002721634913082">已暫停</translation> <translation id="7609951632080598826">日曆檢視畫面,<ph name="DATE" /> <ph name="TIME" /></translation> <translation id="7611213136657090146">已重新連接攝影機。</translation> @@ -2045,6 +2051,7 @@ <ph name="IME" /> <ph name="LOCALE" /></translation> <translation id="7899977217122813285">專注模式已開啟,系統會在 <ph name="TIME" />前忽略通知</translation> +<translation id="7901010467630324625">僅限已登入 <ph name="EMAIL" /> 的裝置</translation> <translation id="7901190436359881020">交換視窗</translation> <translation id="7901405293566323524">Phone Hub</translation> <translation id="7902625623987030061">請輕觸指紋感應器</translation>
diff --git a/ash/webui/recorder_app_ui/recorder_app_ui.cc b/ash/webui/recorder_app_ui/recorder_app_ui.cc index 213bd6f..e723178d 100644 --- a/ash/webui/recorder_app_ui/recorder_app_ui.cc +++ b/ash/webui/recorder_app_ui/recorder_app_ui.cc
@@ -49,6 +49,15 @@ namespace { +// New ChromeOS feedback dialog (crbug.com/40941303) passes description template +// as query parameters in GURL with character limit 2097152 (defined in +// url.mojom.kMaxURLChars). +// +// Calculates characters as 1000-char (around 200-word) template with maximum +// model input & output (12k tokens in total) we likely want to include in the +// description. +const uint32_t kFeedbackDescriptionTemplateMaxChars = 49000; // 1000 + 4 * 12k + std::string_view SodaInstallerErrorCodeToString( speech::SodaInstaller::ErrorCode error) { switch (error) { @@ -695,6 +704,12 @@ void RecorderAppUI::OpenAiFeedbackDialog( const std::string& description_template) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + if (description_template.length() > kFeedbackDescriptionTemplateMaxChars) { + LOG(ERROR) + << "Refusing to open feedback dialog as description template exceeds " + << kFeedbackDescriptionTemplateMaxChars << " characters"; + return; + } delegate_->OpenAiFeedbackDialog(description_template); }
diff --git a/ash/wm/coral/coral_controller.cc b/ash/wm/coral/coral_controller.cc index de3fab0..3dd917d 100644 --- a/ash/wm/coral/coral_controller.cc +++ b/ash/wm/coral/coral_controller.cc
@@ -119,9 +119,10 @@ const CoralRequest& request, mojo::PendingRemote<coral::mojom::TitleObserver> title_observer, CoralResponseCallback callback) { - // There couldn't be valid groups, skip generating and return a null response. + // There couldn't be valid groups, skip generating and return an empty + // response. if (request.content().size() < kMinItemsInGroup) { - std::move(callback).Run(nullptr); + std::move(callback).Run(std::make_unique<CoralResponse>()); return; }
diff --git a/ash/wm/coral/coral_controller_unittest.cc b/ash/wm/coral/coral_controller_unittest.cc index 976b3a5..13a96c7 100644 --- a/ash/wm/coral/coral_controller_unittest.cc +++ b/ash/wm/coral/coral_controller_unittest.cc
@@ -236,7 +236,7 @@ // Check that we are on the newly created desk now. ASSERT_EQ(desks_controller->GetNumberOfDesks(), 2); EXPECT_EQ(desks_controller->GetActiveDeskIndex(), 1); - ASSERT_TRUE(desks_controller->active_desk()->modified_by_coral()); + ASSERT_EQ(desks_controller->active_desk()->type(), Desk::Type::kCoral); // Check that the chip is removed. EXPECT_EQ( @@ -489,9 +489,9 @@ GetSavedDeskItemButton(/*index=*/0); LeftClickOn(saved_group_launch_button); - // Test that we create a new desk which is modified by Coral. + // Test that we create a new desk of type coral. ASSERT_EQ(desks_controller->GetNumberOfDesks(), 2); - EXPECT_TRUE(desks_controller->desks().back()->modified_by_coral()); + EXPECT_EQ(desks_controller->desks().back()->type(), Desk::Type::kCoral); } // Tests that the saved desk library has the expected amount of grid items.
diff --git a/ash/wm/desks/desk.cc b/ash/wm/desks/desk.cc index 4dcbf8f..d0f60859 100644 --- a/ash/wm/desks/desk.cc +++ b/ash/wm/desks/desk.cc
@@ -241,9 +241,10 @@ // ----------------------------------------------------------------------------- // Desk: -Desk::Desk(int associated_container_id, bool desk_being_restored) +Desk::Desk(int associated_container_id, Type type) : uuid_(base::Uuid::GenerateRandomV4()), container_id_(associated_container_id), + type_(type), creation_time_(base::Time::Now()) { // For the very first default desk added during initialization, there won't be // any root windows yet. That's OK, OnRootWindowAdded() will be called @@ -251,7 +252,7 @@ for (aura::Window* root : Shell::GetAllRootWindows()) OnRootWindowAdded(root); - if (!desk_being_restored) { + if (type != Type::kRestored) { MaybeIncrementWeeklyActiveDesks(); } }
diff --git a/ash/wm/desks/desk.h b/ash/wm/desks/desk.h index d7b5e00..d8e7f407 100644 --- a/ash/wm/desks/desk.h +++ b/ash/wm/desks/desk.h
@@ -35,6 +35,12 @@ // the desk is inactive, those containers are hidden. class ASH_EXPORT Desk { public: + enum class Type { + kRestored, // A restored desk. + kCoral, // A desk created from a coral group. + kNormal, // Other normal type of desks. + }; + class Observer : public base::CheckedObserver { public: // Called when the desk's content change as a result of windows addition or @@ -94,7 +100,7 @@ size_t order = 0; }; - explicit Desk(int associated_container_id, bool desk_being_restored = false); + explicit Desk(int associated_container_id, Type type = Type::kNormal); Desk(const Desk&) = delete; Desk& operator=(const Desk&) = delete; @@ -104,6 +110,8 @@ static void SetWeeklyActiveDesks(int weekly_active_desks); static int GetWeeklyActiveDesks(); + Type type() const { return type_; } + int container_id() const { return container_id_; } const base::Uuid& uuid() const { return uuid_; } @@ -153,11 +161,6 @@ // 0 means that the desk is associated with the primary user (the default). uint64_t lacros_profile_id() const { return lacros_profile_id_; } - void set_modified_by_coral(bool modified_by_coral) { - modified_by_coral_ = modified_by_coral; - } - bool modified_by_coral() const { return modified_by_coral_; } - void AddObserver(Observer* observer); void RemoveObserver(Observer* observer); @@ -333,6 +336,8 @@ // The associated container ID with this desk. const int container_id_; + const Type type_; + // Windows tracked on this desk. Clients of the DesksController can use this // list when they're notified of desk change events. // TODO(afakhry): Change this to track MRU windows on this desk. @@ -401,9 +406,6 @@ // The lacros profile ID that this desk has been associated with. Defaults to // 0 which means the desk is associated with the primary user. uint64_t lacros_profile_id_ = 0; - - // True if the desk is created or restored from a coral group. - bool modified_by_coral_ = false; }; } // namespace ash
diff --git a/ash/wm/desks/desks_controller.cc b/ash/wm/desks/desks_controller.cc index 72ec1479..61404fe 100644 --- a/ash/wm/desks/desks_controller.cc +++ b/ash/wm/desks/desks_controller.cc
@@ -596,16 +596,17 @@ // should it trigger any UMA stats reports. const bool is_first_ever_desk = desks_.empty(); - desks_.push_back(std::make_unique<Desk>( - available_container_ids_.front(), - source == DesksCreationRemovalSource::kDesksRestore)); + Desk::Type type = Desk::Type::kNormal; + if (source == DesksCreationRemovalSource::kDesksRestore) { + type = Desk::Type::kRestored; + } else if (source == DesksCreationRemovalSource::kCoral) { + type = Desk::Type::kCoral; + } + desks_.push_back( + std::make_unique<Desk>(available_container_ids_.front(), type)); available_container_ids_.pop(); Desk* new_desk = desks_.back().get(); - if (source == DesksCreationRemovalSource::kCoral) { - new_desk->set_modified_by_coral(true); - } - // We should notify observers that the desk is added before possibly // notifying observers that the name is set. for (auto& observer : observers_) {
diff --git a/base/allocator/partition_allocator/src/partition_alloc/lightweight_quarantine.cc b/base/allocator/partition_allocator/src/partition_alloc/lightweight_quarantine.cc index 12be208e..cbcb4473 100644 --- a/base/allocator/partition_allocator/src/partition_alloc/lightweight_quarantine.cc +++ b/base/allocator/partition_allocator/src/partition_alloc/lightweight_quarantine.cc
@@ -19,7 +19,10 @@ public: PA_ALWAYS_INLINE explicit CompileTimeConditionalScopedGuard(Lock& lock) PA_EXCLUSIVE_LOCK_FUNCTION(lock) {} - PA_ALWAYS_INLINE ~CompileTimeConditionalScopedGuard() PA_UNLOCK_FUNCTION() {} + // For some reason, defaulting this causes a thread safety annotation failure. + PA_ALWAYS_INLINE + ~CompileTimeConditionalScopedGuard() // NOLINT(modernize-use-equals-default) + PA_UNLOCK_FUNCTION() {} }; template <>
diff --git a/base/allocator/partition_allocator/src/partition_alloc/pointers/raw_ptr_unittest.cc b/base/allocator/partition_allocator/src/partition_alloc/pointers/raw_ptr_unittest.cc index 059cfa61..46a2ad41 100644 --- a/base/allocator/partition_allocator/src/partition_alloc/pointers/raw_ptr_unittest.cc +++ b/base/allocator/partition_allocator/src/partition_alloc/pointers/raw_ptr_unittest.cc
@@ -914,11 +914,14 @@ { Derived derived_val(42, 84, 1024); - CountingRawPtr<Derived> checked_derived_ptr = &derived_val; - CountingRawPtr<Base1> checked_base1_ptr(std::move(checked_derived_ptr)); - CountingRawPtr<Base2> checked_base2_ptr(std::move(checked_derived_ptr)); - checked_base1_ptr = std::move(checked_derived_ptr); - checked_base2_ptr = std::move(checked_derived_ptr); + CountingRawPtr<Derived> checked_derived_ptr1 = &derived_val; + CountingRawPtr<Derived> checked_derived_ptr2 = &derived_val; + CountingRawPtr<Derived> checked_derived_ptr3 = &derived_val; + CountingRawPtr<Derived> checked_derived_ptr4 = &derived_val; + CountingRawPtr<Base1> checked_base1_ptr(std::move(checked_derived_ptr1)); + CountingRawPtr<Base2> checked_base2_ptr(std::move(checked_derived_ptr2)); + checked_base1_ptr = std::move(checked_derived_ptr3); + checked_base2_ptr = std::move(checked_derived_ptr4); } EXPECT_THAT((CountingRawPtrExpectations{
diff --git a/base/allocator/partition_allocator/src/partition_alloc/pointers/raw_ref_unittest.cc b/base/allocator/partition_allocator/src/partition_alloc/pointers/raw_ref_unittest.cc index 3e7e6a6..a3b1ebae 100644 --- a/base/allocator/partition_allocator/src/partition_alloc/pointers/raw_ref_unittest.cc +++ b/base/allocator/partition_allocator/src/partition_alloc/pointers/raw_ref_unittest.cc
@@ -563,43 +563,56 @@ int i = 1; auto r = raw_ref<int>(i); auto r2 = std::move(r); - EXPECT_CHECK_DEATH({ [[maybe_unused]] auto r3 = r; }); + EXPECT_CHECK_DEATH({ + [[maybe_unused]] auto r3 = r; // NOLINT(bugprone-use-after-move) + }); } TEST(RawRefDeathTest, MoveConstructAfterMove) { int i = 1; auto r = raw_ref<int>(i); auto r2 = std::move(r); - EXPECT_CHECK_DEATH({ [[maybe_unused]] auto r3 = std::move(r); }); + EXPECT_CHECK_DEATH({ + [[maybe_unused]] auto r3 = std::move(r); // NOLINT(bugprone-use-after-move) + }); } TEST(RawRefDeathTest, CopyAssignAfterMove) { int i = 1; auto r = raw_ref<int>(i); auto r2 = std::move(r); - EXPECT_CHECK_DEATH({ r2 = r; }); + EXPECT_CHECK_DEATH({ + r2 = r; // NOLINT(bugprone-use-after-move) + }); } TEST(RawRefDeathTest, MoveAssignAfterMove) { int i = 1; auto r = raw_ref<int>(i); auto r2 = std::move(r); - EXPECT_CHECK_DEATH({ r2 = std::move(r); }); + EXPECT_CHECK_DEATH({ + r2 = std::move(r); // NOLINT(bugprone-use-after-move) + }); } TEST(RawRefDeathTest, CopyConstructAfterMoveUpCast) { auto s = SubClass(); auto r = raw_ref<SubClass>(s); auto moved = std::move(r); - EXPECT_CHECK_DEATH({ [[maybe_unused]] auto r2 = raw_ref<BaseClass>(r); }); + EXPECT_CHECK_DEATH({ + [[maybe_unused]] auto r2 = + raw_ref<BaseClass>(r); // NOLINT(bugprone-use-after-move) + }); } TEST(RawRefDeathTest, MoveConstructAfterMoveUpCast) { auto s = SubClass(); auto r = raw_ref<SubClass>(s); auto moved = std::move(r); - EXPECT_CHECK_DEATH( - { [[maybe_unused]] auto r2 = raw_ref<BaseClass>(std::move(r)); }); + EXPECT_CHECK_DEATH({ + [[maybe_unused]] auto r2 = + raw_ref<BaseClass>(std::move(r)); // NOLINT(bugprone-use-after-move) + }); } TEST(RawRefDeathTest, FromPtrWithNullptr) { @@ -612,7 +625,9 @@ auto t = BaseClass(); auto rt = raw_ref<const BaseClass>(t); auto moved = std::move(r); - EXPECT_CHECK_DEATH({ rt = r; }); + EXPECT_CHECK_DEATH({ + rt = r; // NOLINT(bugprone-use-after-move) + }); } TEST(RawRefDeathTest, MoveAssignAfterMoveUpCast) { @@ -621,21 +636,27 @@ auto t = BaseClass(); auto rt = raw_ref<const BaseClass>(t); auto moved = std::move(r); - EXPECT_CHECK_DEATH({ rt = std::move(r); }); + EXPECT_CHECK_DEATH({ + rt = std::move(r); // NOLINT(bugprone-use-after-move) + }); } TEST(RawRefDeathTest, DerefAfterMove) { int i; auto r = raw_ref<int>(i); auto moved = std::move(r); - EXPECT_CHECK_DEATH({ r.operator*(); }); + EXPECT_CHECK_DEATH({ + r.operator*(); // NOLINT(bugprone-use-after-move) + }); } TEST(RawRefDeathTest, ArrowAfterMove) { int i; auto r = raw_ref<int>(i); auto moved = std::move(r); - EXPECT_CHECK_DEATH({ r.operator->(); }); + EXPECT_CHECK_DEATH({ + r.operator->(); // NOLINT(bugprone-use-after-move) + }); } TEST(RawRefDeathTest, SwapAfterMove) { @@ -646,7 +667,9 @@ auto rj = raw_ref<int>(j); auto moved = std::move(ri); - EXPECT_CHECK_DEATH({ swap(ri, rj); }); + EXPECT_CHECK_DEATH({ + swap(ri, rj); // NOLINT(bugprone-use-after-move) + }); } { int i; @@ -655,7 +678,9 @@ auto rj = raw_ref<int>(j); auto moved = std::move(rj); - EXPECT_CHECK_DEATH({ swap(ri, rj); }); + EXPECT_CHECK_DEATH({ + swap(ri, rj); // NOLINT(bugprone-use-after-move) + }); } } @@ -665,20 +690,26 @@ auto r1 = raw_ref<int>(i); auto r2 = raw_ref<int>(i); auto moved = std::move(r1); - EXPECT_CHECK_DEATH({ [[maybe_unused]] bool b = r1 == r2; }); + EXPECT_CHECK_DEATH({ + [[maybe_unused]] bool b = r1 == r2; // NOLINT(bugprone-use-after-move) + }); } { int i = 1; auto r1 = raw_ref<int>(i); auto r2 = raw_ref<int>(i); auto moved = std::move(r2); - EXPECT_CHECK_DEATH({ [[maybe_unused]] bool b = r1 == r2; }); + EXPECT_CHECK_DEATH({ + [[maybe_unused]] bool b = r1 == r2; // NOLINT(bugprone-use-after-move) + }); } { int i = 1; auto r1 = raw_ref<int>(i); auto moved = std::move(r1); - EXPECT_CHECK_DEATH({ [[maybe_unused]] bool b = r1 == r1; }); + EXPECT_CHECK_DEATH({ + [[maybe_unused]] bool b = r1 == r1; // NOLINT(bugprone-use-after-move) + }); } } @@ -688,20 +719,26 @@ auto r1 = raw_ref<int>(i); auto r2 = raw_ref<int>(i); auto moved = std::move(r1); - EXPECT_CHECK_DEATH({ [[maybe_unused]] bool b = r1 != r2; }); + EXPECT_CHECK_DEATH({ + [[maybe_unused]] bool b = r1 != r2; // NOLINT(bugprone-use-after-move) + }); } { int i = 1; auto r1 = raw_ref<int>(i); auto r2 = raw_ref<int>(i); auto moved = std::move(r2); - EXPECT_CHECK_DEATH({ [[maybe_unused]] bool b = r1 != r2; }); + EXPECT_CHECK_DEATH({ + [[maybe_unused]] bool b = r1 != r2; // NOLINT(bugprone-use-after-move) + }); } { int i = 1; auto r1 = raw_ref<int>(i); auto moved = std::move(r1); - EXPECT_CHECK_DEATH({ [[maybe_unused]] bool b = r1 != r1; }); + EXPECT_CHECK_DEATH({ + [[maybe_unused]] bool b = r1 != r1; // NOLINT(bugprone-use-after-move) + }); } } @@ -711,20 +748,26 @@ auto r1 = raw_ref<int>(i); auto r2 = raw_ref<int>(i); auto moved = std::move(r1); - EXPECT_CHECK_DEATH({ [[maybe_unused]] bool b = r1 < r2; }); + EXPECT_CHECK_DEATH({ + [[maybe_unused]] bool b = r1 < r2; // NOLINT(bugprone-use-after-move) + }); } { int i = 1; auto r1 = raw_ref<int>(i); auto r2 = raw_ref<int>(i); auto moved = std::move(r2); - EXPECT_CHECK_DEATH({ [[maybe_unused]] bool b = r1 < r2; }); + EXPECT_CHECK_DEATH({ + [[maybe_unused]] bool b = r1 < r2; // NOLINT(bugprone-use-after-move) + }); } { int i = 1; auto r1 = raw_ref<int>(i); auto moved = std::move(r1); - EXPECT_CHECK_DEATH({ [[maybe_unused]] bool b = r1 < r1; }); + EXPECT_CHECK_DEATH({ + [[maybe_unused]] bool b = r1 < r1; // NOLINT(bugprone-use-after-move) + }); } } @@ -734,20 +777,26 @@ auto r1 = raw_ref<int>(i); auto r2 = raw_ref<int>(i); auto moved = std::move(r1); - EXPECT_CHECK_DEATH({ [[maybe_unused]] bool b = r1 > r2; }); + EXPECT_CHECK_DEATH({ + [[maybe_unused]] bool b = r1 > r2; // NOLINT(bugprone-use-after-move) + }); } { int i = 1; auto r1 = raw_ref<int>(i); auto r2 = raw_ref<int>(i); auto moved = std::move(r2); - EXPECT_CHECK_DEATH({ [[maybe_unused]] bool b = r1 > r2; }); + EXPECT_CHECK_DEATH({ + [[maybe_unused]] bool b = r1 > r2; // NOLINT(bugprone-use-after-move) + }); } { int i = 1; auto r1 = raw_ref<int>(i); auto moved = std::move(r1); - EXPECT_CHECK_DEATH({ [[maybe_unused]] bool b = r1 > r1; }); + EXPECT_CHECK_DEATH({ + [[maybe_unused]] bool b = r1 > r1; // NOLINT(bugprone-use-after-move) + }); } } @@ -757,20 +806,26 @@ auto r1 = raw_ref<int>(i); auto r2 = raw_ref<int>(i); auto moved = std::move(r1); - EXPECT_CHECK_DEATH({ [[maybe_unused]] bool b = r1 <= r2; }); + EXPECT_CHECK_DEATH({ + [[maybe_unused]] bool b = r1 <= r2; // NOLINT(bugprone-use-after-move) + }); } { int i = 1; auto r1 = raw_ref<int>(i); auto r2 = raw_ref<int>(i); auto moved = std::move(r2); - EXPECT_CHECK_DEATH({ [[maybe_unused]] bool b = r1 <= r2; }); + EXPECT_CHECK_DEATH({ + [[maybe_unused]] bool b = r1 <= r2; // NOLINT(bugprone-use-after-move) + }); } { int i = 1; auto r1 = raw_ref<int>(i); auto moved = std::move(r1); - EXPECT_CHECK_DEATH({ [[maybe_unused]] bool b = r1 <= r1; }); + EXPECT_CHECK_DEATH({ + [[maybe_unused]] bool b = r1 <= r1; // NOLINT(bugprone-use-after-move) + }); } } @@ -780,20 +835,26 @@ auto r1 = raw_ref<int>(i); auto r2 = raw_ref<int>(i); auto moved = std::move(r1); - EXPECT_CHECK_DEATH({ [[maybe_unused]] bool b = r1 >= r2; }); + EXPECT_CHECK_DEATH({ + [[maybe_unused]] bool b = r1 >= r2; // NOLINT(bugprone-use-after-move) + }); } { int i = 1; auto r1 = raw_ref<int>(i); auto r2 = raw_ref<int>(i); auto moved = std::move(r2); - EXPECT_CHECK_DEATH({ [[maybe_unused]] bool b = r1 >= r2; }); + EXPECT_CHECK_DEATH({ + [[maybe_unused]] bool b = r1 >= r2; // NOLINT(bugprone-use-after-move) + }); } { int i = 1; auto r1 = raw_ref<int>(i); auto moved = std::move(r1); - EXPECT_CHECK_DEATH({ [[maybe_unused]] bool b = r1 >= r1; }); + EXPECT_CHECK_DEATH({ + [[maybe_unused]] bool b = r1 >= r1; // NOLINT(bugprone-use-after-move) + }); } }
diff --git a/base/allocator/partition_allocator/src/partition_alloc/shim/allocator_shim_unittest.cc b/base/allocator/partition_allocator/src/partition_alloc/shim/allocator_shim_unittest.cc index 0a10b92..e2ab0654 100644 --- a/base/allocator/partition_allocator/src/partition_alloc/shim/allocator_shim_unittest.cc +++ b/base/allocator/partition_allocator/src/partition_alloc/shim/allocator_shim_unittest.cc
@@ -63,7 +63,7 @@ class AllocatorShimTest : public testing::Test { public: - AllocatorShimTest() {} + AllocatorShimTest() = default; static size_t Hash(const void* ptr) { return reinterpret_cast<uintptr_t>(ptr) % MaxSizeTracked();
diff --git a/base/containers/circular_deque_unittest.cc b/base/containers/circular_deque_unittest.cc index 8f7ab06d..b18672d 100644 --- a/base/containers/circular_deque_unittest.cc +++ b/base/containers/circular_deque_unittest.cc
@@ -116,7 +116,7 @@ circular_deque<MoveOnlyInt> first(base::from_range, values); circular_deque<MoveOnlyInt> second(std::move(first)); - EXPECT_TRUE(first.empty()); + EXPECT_TRUE(first.empty()); // NOLINT(bugprone-use-after-move) EXPECT_EQ(6u, second.size()); for (int i = 0; i < 6; i++) { EXPECT_EQ(i + 1, second[i].data()); @@ -192,7 +192,7 @@ circular_deque<int> move; EXPECT_TRUE(move.empty()); move = std::move(first); - EXPECT_TRUE(first.empty()); + EXPECT_TRUE(first.empty()); // NOLINT(bugprone-use-after-move) EXPECT_EQ(6u, move.size()); for (int i = 0; i < 6; i++) { EXPECT_EQ(i + 1, move[i]);
diff --git a/base/containers/extend_unittest.cc b/base/containers/extend_unittest.cc index 4fe2058c..e5860795 100644 --- a/base/containers/extend_unittest.cc +++ b/base/containers/extend_unittest.cc
@@ -71,7 +71,7 @@ Extend(dst, std::move(src)); EXPECT_EQ(dst, expected); - EXPECT_TRUE(src.empty()); + EXPECT_TRUE(src.empty()); // NOLINT(bugprone-use-after-move) } TEST(ExtendTest, ExtendCopyableWithMove) { @@ -90,7 +90,7 @@ Extend(dst, std::move(src)); EXPECT_EQ(dst, expected); - EXPECT_TRUE(src.empty()); + EXPECT_TRUE(src.empty()); // NOLINT(bugprone-use-after-move) } TEST(ExtendTest, ExtendWithCopy) {
diff --git a/base/containers/flat_map_unittest.cc b/base/containers/flat_map_unittest.cc index ba2941c..6a934996 100644 --- a/base/containers/flat_map_unittest.cc +++ b/base/containers/flat_map_unittest.cc
@@ -261,8 +261,8 @@ EXPECT_EQ(22, result.first->second.data()); EXPECT_TRUE(result.second); EXPECT_EQ(1u, m.size()); - EXPECT_EQ(0, key.data()); // moved from - EXPECT_EQ(0, val.data()); // moved from + EXPECT_EQ(0, key.data()); // NOLINT(bugprone-use-after-move) + EXPECT_EQ(0, val.data()); // NOLINT(bugprone-use-after-move) // Second call with same key should result in an assignment, overwriting the // old value. Assignment should be indicated by setting the second pair member @@ -275,8 +275,8 @@ EXPECT_EQ(44, result.first->second.data()); EXPECT_FALSE(result.second); EXPECT_EQ(1u, m.size()); - EXPECT_EQ(1, key.data()); // not moved from - EXPECT_EQ(0, val.data()); // moved from + EXPECT_EQ(1, key.data()); // NOLINT(bugprone-use-after-move) + EXPECT_EQ(0, val.data()); // NOLINT(bugprone-use-after-move) // Check that random insertion results in sorted range. base::flat_map<MoveOnlyInt, int> map; @@ -298,8 +298,8 @@ EXPECT_EQ(1, result->first.data()); EXPECT_EQ(22, result->second.data()); EXPECT_EQ(1u, m.size()); - EXPECT_EQ(0, key.data()); // moved from - EXPECT_EQ(0, val.data()); // moved from + EXPECT_EQ(0, key.data()); // NOLINT(bugprone-use-after-move) + EXPECT_EQ(0, val.data()); // NOLINT(bugprone-use-after-move) // Second call with same key should result in an assignment, overwriting the // old value. Only the inserted value should be moved from, the key should be @@ -310,8 +310,8 @@ EXPECT_EQ(1, result->first.data()); EXPECT_EQ(44, result->second.data()); EXPECT_EQ(1u, m.size()); - EXPECT_EQ(1, key.data()); // not moved from - EXPECT_EQ(0, val.data()); // moved from + EXPECT_EQ(1, key.data()); // NOLINT(bugprone-use-after-move) + EXPECT_EQ(0, val.data()); // NOLINT(bugprone-use-after-move) // Check that random insertion results in sorted range. base::flat_map<MoveOnlyInt, int> map; @@ -338,9 +338,9 @@ EXPECT_EQ(44, result.first->second.second.data()); EXPECT_TRUE(result.second); EXPECT_EQ(1u, m.size()); - EXPECT_EQ(0, key.data()); // moved from - EXPECT_EQ(0, val1.data()); // moved from - EXPECT_EQ(0, val2.data()); // moved from + EXPECT_EQ(0, key.data()); // NOLINT(bugprone-use-after-move) + EXPECT_EQ(0, val1.data()); // NOLINT(bugprone-use-after-move) + EXPECT_EQ(0, val2.data()); // NOLINT(bugprone-use-after-move) // Second call with same key should result in a no-op, returning an iterator // to the existing element and returning false as the second pair member. @@ -383,9 +383,9 @@ EXPECT_EQ(22, result->second.first.data()); EXPECT_EQ(44, result->second.second.data()); EXPECT_EQ(1u, m.size()); - EXPECT_EQ(0, key.data()); // moved from - EXPECT_EQ(0, val1.data()); // moved from - EXPECT_EQ(0, val2.data()); // moved from + EXPECT_EQ(0, key.data()); // NOLINT(bugprone-use-after-move) + EXPECT_EQ(0, val1.data()); // NOLINT(bugprone-use-after-move) + EXPECT_EQ(0, val2.data()); // NOLINT(bugprone-use-after-move) // Second call with same key should result in a no-op, returning an iterator // to the existing element. Key and values that were attempted to be inserted
diff --git a/base/containers/flat_tree_unittest.cc b/base/containers/flat_tree_unittest.cc index 168118a..a0c2efe 100644 --- a/base/containers/flat_tree_unittest.cc +++ b/base/containers/flat_tree_unittest.cc
@@ -996,7 +996,7 @@ cont.emplace(4); TypeParam body = std::move(cont).extract(); - EXPECT_THAT(cont, IsEmpty()); + EXPECT_THAT(cont, IsEmpty()); // NOLINT(bugprone-use-after-move) EXPECT_THAT(body, ElementsAre(1, 2, 3, 4)); }
diff --git a/base/containers/heap_array_unittest.cc b/base/containers/heap_array_unittest.cc index 6b7752c..e9843401 100644 --- a/base/containers/heap_array_unittest.cc +++ b/base/containers/heap_array_unittest.cc
@@ -75,8 +75,8 @@ base::HeapArray<uint32_t> vec(std::move(that)); EXPECT_EQ(vec.size(), 2u); EXPECT_NE(vec.data(), nullptr); - EXPECT_EQ(that.size(), 0u); - EXPECT_EQ(that.data(), nullptr); + EXPECT_EQ(that.size(), 0u); // NOLINT(bugprone-use-after-move) + EXPECT_EQ(that.data(), nullptr); // NOLINT(bugprone-use-after-move) } TEST(HeapArray, MoveAssign) { @@ -85,8 +85,8 @@ vec = std::move(that); EXPECT_EQ(vec.size(), 2u); EXPECT_NE(vec.data(), nullptr); - EXPECT_EQ(that.size(), 0u); - EXPECT_EQ(that.data(), nullptr); + EXPECT_EQ(that.size(), 0u); // NOLINT(bugprone-use-after-move) + EXPECT_EQ(that.data(), nullptr); // NOLINT(bugprone-use-after-move) } TEST(HeapArray, DataAndIndex) { @@ -322,8 +322,8 @@ auto smaller_that = std::move(that).take_first(1u); EXPECT_EQ(smaller_that.size(), 1u); EXPECT_EQ(that_data, smaller_that.data()); - EXPECT_EQ(that.size(), 0u); - EXPECT_EQ(that.data(), nullptr); + EXPECT_EQ(that.size(), 0u); // NOLINT(bugprone-use-after-move) + EXPECT_EQ(that.data(), nullptr); // NOLINT(bugprone-use-after-move) } TEST(HeapArray, TakeFirstWithZeroSize) { @@ -331,8 +331,8 @@ auto smaller_that = std::move(that).take_first(0u); EXPECT_EQ(smaller_that.size(), 0u); EXPECT_EQ(smaller_that.data(), nullptr); - EXPECT_EQ(that.size(), 0u); - EXPECT_EQ(that.data(), nullptr); + EXPECT_EQ(that.size(), 0u); // NOLINT(bugprone-use-after-move) + EXPECT_EQ(that.data(), nullptr); // NOLINT(bugprone-use-after-move) } TEST(HeapArrayDeathTest, TakeFirstWithOverSize) {
diff --git a/base/containers/intrusive_heap_unittest.cc b/base/containers/intrusive_heap_unittest.cc index faefd12..fcf51b1 100644 --- a/base/containers/intrusive_heap_unittest.cc +++ b/base/containers/intrusive_heap_unittest.cc
@@ -314,16 +314,16 @@ EXPECT_EQ(4u, heap2.size()); EXPECT_FALSE(heap2.empty()); ExpectHeap(heap2); - EXPECT_EQ(0u, heap.size()); - EXPECT_TRUE(heap.empty()); + EXPECT_EQ(0u, heap.size()); // NOLINT(bugprone-use-after-move) + EXPECT_TRUE(heap.empty()); // NOLINT(bugprone-use-after-move) ExpectHeap(heap); heap = std::move(heap2); EXPECT_EQ(4u, heap.size()); EXPECT_FALSE(heap.empty()); ExpectHeap(heap); - EXPECT_EQ(0u, heap2.size()); - EXPECT_TRUE(heap2.empty()); + EXPECT_EQ(0u, heap2.size()); // NOLINT(bugprone-use-after-move) + EXPECT_TRUE(heap2.empty()); // NOLINT(bugprone-use-after-move) ExpectHeap(heap2); } @@ -464,9 +464,9 @@ public: explicit Value(int value) : value_(value) {} Value() : value_(-1) {} - Value(Value&& other) noexcept - : InternalHeapHandleStorage(std::move(other)), - value_(std::exchange(other.value_, -1)) {} + Value(Value&& other) noexcept : value_(std::exchange(other.value_, -1)) { + InternalHeapHandleStorage::operator=(std::move(other)); + } Value(const Value& other) : value_(other.value_) { HeapHandle h = other.GetHeapHandle(); if (h.IsValid()) { @@ -476,8 +476,8 @@ ~Value() override = default; Value& operator=(Value&& other) noexcept { - InternalHeapHandleStorage::operator=(std::move(other)); value_ = std::exchange(other.value_, -1); + InternalHeapHandleStorage::operator=(std::move(other)); return *this; } Value& operator=(const Value& other) { @@ -581,7 +581,7 @@ // Move constructor. IntrusiveHeapInt heap2(std::move(heap)); - EXPECT_TRUE(heap.empty()); + EXPECT_TRUE(heap.empty()); // NOLINT(bugprone-use-after-move) ExpectCanonical(heap2); } @@ -606,7 +606,7 @@ // Move assignment. IntrusiveHeapInt heap2; heap2 = std::move(heap); - EXPECT_TRUE(heap.empty()); + EXPECT_TRUE(heap.empty()); // NOLINT(bugprone-use-after-move) ExpectCanonical(heap2); }
diff --git a/base/containers/linked_list_unittest.cc b/base/containers/linked_list_unittest.cc index 3a982bb8..48cdc0e 100644 --- a/base/containers/linked_list_unittest.cc +++ b/base/containers/linked_list_unittest.cc
@@ -23,7 +23,7 @@ class MultipleInheritanceNodeBase { public: - MultipleInheritanceNodeBase() {} + MultipleInheritanceNodeBase() = default; int field_taking_up_space_ = 0; }; @@ -335,8 +335,8 @@ MovableNode n2_new(std::move(n2)); - EXPECT_EQ(nullptr, n2.next()); - EXPECT_EQ(nullptr, n2.previous()); + EXPECT_EQ(nullptr, n2.next()); // NOLINT(bugprone-use-after-move) + EXPECT_EQ(nullptr, n2.previous()); // NOLINT(bugprone-use-after-move) EXPECT_EQ(&n1, n2_new.previous()); EXPECT_EQ(&n2_new, n1.next());
diff --git a/base/containers/span_unittest.cc b/base/containers/span_unittest.cc index d9e14af..fc9efc4b9 100644 --- a/base/containers/span_unittest.cc +++ b/base/containers/span_unittest.cc
@@ -2221,13 +2221,14 @@ EXPECT_THAT(vec, ElementsAre(9, 9, 6)); struct NonTrivial { - NonTrivial(int o) : i(o) {} + explicit NonTrivial(int o) : i(o) {} NonTrivial(const NonTrivial& o) : i(o) {} NonTrivial& operator=(const NonTrivial& o) { - i = o; + i = int{o}; return *this; } - operator int() const { return i; } + explicit operator int() const { return i; } + bool operator==(int j) const { return i == j; } int i; }; @@ -2253,21 +2254,27 @@ EXPECT_THAT(long_arr_is_long, ElementsAre(1, 2, 3, 4, 5, 6, 7)); } { - NonTrivial long_arr_is_long[] = {1, 2, 3, 4, 5, 6, 7}; + NonTrivial long_arr_is_long[] = { + NonTrivial(1), NonTrivial(2), NonTrivial(3), NonTrivial(4), + NonTrivial(5), NonTrivial(6), NonTrivial(7)}; auto left = span(long_arr_is_long).first<5>(); auto right = span(long_arr_is_long).last<5>(); left.copy_from(right); EXPECT_THAT(long_arr_is_long, ElementsAre(3, 4, 5, 6, 7, 6, 7)); } { - NonTrivial long_arr_is_long[] = {1, 2, 3, 4, 5, 6, 7}; + NonTrivial long_arr_is_long[] = { + NonTrivial(1), NonTrivial(2), NonTrivial(3), NonTrivial(4), + NonTrivial(5), NonTrivial(6), NonTrivial(7)}; auto left = span(long_arr_is_long).first<5>(); auto right = span(long_arr_is_long).last<5>(); right.copy_from(left); EXPECT_THAT(long_arr_is_long, ElementsAre(1, 2, 1, 2, 3, 4, 5)); } { - NonTrivial long_arr_is_long[] = {1, 2, 3, 4, 5, 6, 7}; + NonTrivial long_arr_is_long[] = { + NonTrivial(1), NonTrivial(2), NonTrivial(3), NonTrivial(4), + NonTrivial(5), NonTrivial(6), NonTrivial(7)}; auto left = span(long_arr_is_long).first<5>(); left.copy_from(left); EXPECT_THAT(long_arr_is_long, ElementsAre(1, 2, 3, 4, 5, 6, 7)); @@ -2295,21 +2302,27 @@ EXPECT_THAT(long_arr_is_long, ElementsAre(1, 2, 3, 4, 5, 6, 7)); } { - NonTrivial long_arr_is_long[] = {1, 2, 3, 4, 5, 6, 7}; + NonTrivial long_arr_is_long[] = { + NonTrivial(1), NonTrivial(2), NonTrivial(3), NonTrivial(4), + NonTrivial(5), NonTrivial(6), NonTrivial(7)}; auto left = span<NonTrivial>(long_arr_is_long).first(5u); auto right = span<NonTrivial>(long_arr_is_long).last(5u); left.copy_from(right); EXPECT_THAT(long_arr_is_long, ElementsAre(3, 4, 5, 6, 7, 6, 7)); } { - NonTrivial long_arr_is_long[] = {1, 2, 3, 4, 5, 6, 7}; + NonTrivial long_arr_is_long[] = { + NonTrivial(1), NonTrivial(2), NonTrivial(3), NonTrivial(4), + NonTrivial(5), NonTrivial(6), NonTrivial(7)}; auto left = span<NonTrivial>(long_arr_is_long).first(5u); auto right = span<NonTrivial>(long_arr_is_long).last(5u); right.copy_from(left); EXPECT_THAT(long_arr_is_long, ElementsAre(1, 2, 1, 2, 3, 4, 5)); } { - NonTrivial long_arr_is_long[] = {1, 2, 3, 4, 5, 6, 7}; + NonTrivial long_arr_is_long[] = { + NonTrivial(1), NonTrivial(2), NonTrivial(3), NonTrivial(4), + NonTrivial(5), NonTrivial(6), NonTrivial(7)}; auto left = span<NonTrivial>(long_arr_is_long).first(5u); left.copy_from(left); EXPECT_THAT(long_arr_is_long, ElementsAre(1, 2, 3, 4, 5, 6, 7));
diff --git a/base/files/file_proxy_unittest.cc b/base/files/file_proxy_unittest.cc index 38095bd5..28cde63 100644 --- a/base/files/file_proxy_unittest.cc +++ b/base/files/file_proxy_unittest.cc
@@ -254,7 +254,7 @@ EXPECT_FALSE(proxy.IsValid()); proxy.SetFile(std::move(file)); EXPECT_TRUE(proxy.IsValid()); - EXPECT_FALSE(file.IsValid()); + EXPECT_FALSE(file.IsValid()); // NOLINT(bugprone-use-after-move) file = proxy.TakeFile(); EXPECT_FALSE(proxy.IsValid());
diff --git a/base/files/file_unittest.cc b/base/files/file_unittest.cc index 6acf729..ce44d91 100644 --- a/base/files/file_unittest.cc +++ b/base/files/file_unittest.cc
@@ -384,7 +384,7 @@ // Test passing the file around. file = std::move(file2); - EXPECT_FALSE(file2.IsValid()); + EXPECT_FALSE(file2.IsValid()); // NOLINT(bugprone-use-after-move) ASSERT_TRUE(file.IsValid()); char append_data_to_write[] = "78";
diff --git a/base/files/file_util_unittest.cc b/base/files/file_util_unittest.cc index 33c8638..2608d13 100644 --- a/base/files/file_util_unittest.cc +++ b/base/files/file_util_unittest.cc
@@ -3049,7 +3049,7 @@ stream = FileToFILE(std::move(file), "w"); EXPECT_TRUE(stream); - EXPECT_FALSE(file.IsValid()); + EXPECT_FALSE(file.IsValid()); // NOLINT(bugprone-use-after-move) EXPECT_TRUE(CloseFile(stream)); }
diff --git a/base/files/scoped_temp_dir_unittest.cc b/base/files/scoped_temp_dir_unittest.cc index 2ec1dbd..515b9ec 100644 --- a/base/files/scoped_temp_dir_unittest.cc +++ b/base/files/scoped_temp_dir_unittest.cc
@@ -119,7 +119,7 @@ ScopedTempDir other_dir(std::move(dir)); EXPECT_EQ(dir_path, other_dir.GetPath()); EXPECT_TRUE(DirectoryExists(dir_path)); - EXPECT_FALSE(dir.IsValid()); + EXPECT_FALSE(dir.IsValid()); // NOLINT(bugprone-use-after-move) } EXPECT_FALSE(DirectoryExists(dir_path)); }
diff --git a/base/files/scoped_temp_file_unittest.cc b/base/files/scoped_temp_file_unittest.cc index 3686a93..b306688 100644 --- a/base/files/scoped_temp_file_unittest.cc +++ b/base/files/scoped_temp_file_unittest.cc
@@ -29,7 +29,7 @@ EXPECT_TRUE(PathExists(file1)); ScopedTempFile temp2(std::move(temp1)); - EXPECT_TRUE(temp1.path().empty()); + EXPECT_TRUE(temp1.path().empty()); // NOLINT(bugprone-use-after-move) EXPECT_EQ(file1, temp2.path()); EXPECT_TRUE(PathExists(file1)); } @@ -46,7 +46,7 @@ EXPECT_TRUE(PathExists(file2)); temp2 = std::move(temp1); - EXPECT_TRUE(temp1.path().empty()); + EXPECT_TRUE(temp1.path().empty()); // NOLINT(bugprone-use-after-move) EXPECT_EQ(temp2.path(), file1); EXPECT_TRUE(PathExists(file1)); EXPECT_FALSE(PathExists(file2));
diff --git a/base/functional/bind_unittest.cc b/base/functional/bind_unittest.cc index 2e32e523..7583652 100644 --- a/base/functional/bind_unittest.cc +++ b/base/functional/bind_unittest.cc
@@ -436,7 +436,7 @@ // After running via the rvalue-reference, the value of the OnceCallback // is undefined. The implementation simply clears the instance after the // invocation. - EXPECT_TRUE(c0.is_null()); + EXPECT_TRUE(c0.is_null()); // NOLINT(bugprone-use-after-move) c0 = BindOnce(&Sum, 2, 3, 5, 7, 11); @@ -1639,7 +1639,7 @@ cb = cb3; std::move(cb).Run(); - cb = std::move(cb2); + cb = std::move(cb2); // NOLINT(bugprone-use-after-move) OnceCallback<void(int)> cb4 = BindOnce(&VoidPolymorphic<std::unique_ptr<int>, int>::Run,
diff --git a/base/functional/callback_unittest.cc b/base/functional/callback_unittest.cc index c6743d73..f79aa6e 100644 --- a/base/functional/callback_unittest.cc +++ b/base/functional/callback_unittest.cc
@@ -144,7 +144,7 @@ const RepeatingClosure cb2 = BindRepeating([] {}); ASSERT_TRUE(cb2); std::move(cb2).Run(); - EXPECT_TRUE(cb2); + EXPECT_TRUE(cb2); // NOLINT(bugprone-use-after-move) OnceCallback<void(void*)> cb3 = BindOnce([](void* param) { EXPECT_TRUE(static_cast<OnceCallback<void(void*)>*>(param)->is_null()); @@ -169,7 +169,7 @@ EXPECT_TRUE(!!orig); OnceClosure joined = std::move(orig).Then(base::BindOnce([] {})); EXPECT_TRUE(!!joined); - EXPECT_FALSE(!!orig); + EXPECT_FALSE(!!orig); // NOLINT(bugprone-use-after-move) } { // RepeatingCallback::Then() destroys the original callback if it's an @@ -178,7 +178,7 @@ EXPECT_TRUE(!!orig); RepeatingClosure joined = std::move(orig).Then(base::BindRepeating([] {})); EXPECT_TRUE(!!joined); - EXPECT_FALSE(!!orig); + EXPECT_FALSE(!!orig); // NOLINT(bugprone-use-after-move) } { // RepeatingCallback::Then() doesn't destroy the original callback if it's
diff --git a/base/json/json_value_converter_unittest.cc b/base/json/json_value_converter_unittest.cc index 86ee5cd..96888372 100644 --- a/base/json/json_value_converter_unittest.cc +++ b/base/json/json_value_converter_unittest.cc
@@ -30,7 +30,7 @@ SimpleEnum simple_enum = FOO; std::vector<std::unique_ptr<int>> ints; std::vector<std::unique_ptr<std::string>> string_values; - SimpleMessage() {} + SimpleMessage() = default; static bool ParseSimpleEnum(std::string_view value, SimpleEnum* field) { if (value == "foo") { @@ -85,7 +85,7 @@ SimpleMessage child; std::vector<std::unique_ptr<SimpleMessage>> children; - NestedMessage() {} + NestedMessage() = default; static void RegisterJSONConverter( base::JSONValueConverter<NestedMessage>* converter) {
diff --git a/base/memory/platform_shared_memory_region_unittest.cc b/base/memory/platform_shared_memory_region_unittest.cc index 93d8780..db26603 100644 --- a/base/memory/platform_shared_memory_region_unittest.cc +++ b/base/memory/platform_shared_memory_region_unittest.cc
@@ -152,7 +152,7 @@ PlatformSharedMemoryRegion::CreateWritable(kRegionSize); ASSERT_TRUE(region.IsValid()); PlatformSharedMemoryRegion moved_region = std::move(region); - EXPECT_FALSE(region.IsValid()); + EXPECT_FALSE(region.IsValid()); // NOLINT(bugprone-use-after-move) EXPECT_TRUE(moved_region.IsValid()); }
diff --git a/base/memory/ref_counted_unittest.cc b/base/memory/ref_counted_unittest.cc index da12675..f2428d9 100644 --- a/base/memory/ref_counted_unittest.cc +++ b/base/memory/ref_counted_unittest.cc
@@ -328,7 +328,7 @@ p2 = std::move(p1); EXPECT_EQ(1, ScopedRefPtrCountBase::constructor_count()); EXPECT_EQ(0, ScopedRefPtrCountBase::destructor_count()); - EXPECT_EQ(nullptr, p1.get()); + EXPECT_EQ(nullptr, p1.get()); // NOLINT(bugprone-use-after-move) EXPECT_EQ(raw, p2.get()); // p2 goes out of scope. @@ -360,7 +360,7 @@ EXPECT_EQ(1, ScopedRefPtrCountBase::constructor_count()); EXPECT_EQ(0, ScopedRefPtrCountBase::destructor_count()); EXPECT_EQ(raw, p1.get()); - EXPECT_EQ(nullptr, p2.get()); + EXPECT_EQ(nullptr, p2.get()); // NOLINT(bugprone-use-after-move) // p2 goes out of scope. } @@ -391,7 +391,7 @@ EXPECT_EQ(1, ScopedRefPtrCountBase::constructor_count()); EXPECT_EQ(0, ScopedRefPtrCountBase::destructor_count()); EXPECT_EQ(raw, p1.get()); - EXPECT_EQ(nullptr, p2.get()); + EXPECT_EQ(nullptr, p2.get()); // NOLINT(bugprone-use-after-move) // p2 goes out of scope. } @@ -421,7 +421,7 @@ p2 = std::move(p1); EXPECT_EQ(1, ScopedRefPtrCountBase::constructor_count()); EXPECT_EQ(0, ScopedRefPtrCountBase::destructor_count()); - EXPECT_EQ(nullptr, p1.get()); + EXPECT_EQ(nullptr, p1.get()); // NOLINT(bugprone-use-after-move) EXPECT_EQ(raw, p2.get()); // p2 goes out of scope. @@ -454,7 +454,7 @@ EXPECT_EQ(2, ScopedRefPtrCountBase::constructor_count()); EXPECT_EQ(1, ScopedRefPtrCountBase::destructor_count()); EXPECT_EQ(raw2, p1.get()); - EXPECT_EQ(nullptr, p2.get()); + EXPECT_EQ(nullptr, p2.get()); // NOLINT(bugprone-use-after-move) // p2 goes out of scope. } @@ -514,7 +514,7 @@ EXPECT_EQ(1, ScopedRefPtrCountDerived::constructor_count()); EXPECT_EQ(0, ScopedRefPtrCountDerived::destructor_count()); EXPECT_EQ(raw2, p1.get()); - EXPECT_EQ(nullptr, p2.get()); + EXPECT_EQ(nullptr, p2.get()); // NOLINT(bugprone-use-after-move) // p2 goes out of scope. } @@ -544,7 +544,7 @@ scoped_refptr<ScopedRefPtrCountBase> p2(std::move(p1)); EXPECT_EQ(1, ScopedRefPtrCountBase::constructor_count()); EXPECT_EQ(0, ScopedRefPtrCountBase::destructor_count()); - EXPECT_EQ(nullptr, p1.get()); + EXPECT_EQ(nullptr, p1.get()); // NOLINT(bugprone-use-after-move) EXPECT_EQ(raw, p2.get()); // p2 goes out of scope. @@ -576,7 +576,7 @@ EXPECT_EQ(0, ScopedRefPtrCountBase::destructor_count()); EXPECT_EQ(1, ScopedRefPtrCountDerived::constructor_count()); EXPECT_EQ(0, ScopedRefPtrCountDerived::destructor_count()); - EXPECT_EQ(nullptr, p1.get()); + EXPECT_EQ(nullptr, p1.get()); // NOLINT(bugprone-use-after-move) EXPECT_EQ(raw1, p2.get()); // p2 goes out of scope.
diff --git a/base/memory/safe_ref_unittest.cc b/base/memory/safe_ref_unittest.cc index 5a816af7..dac264a 100644 --- a/base/memory/safe_ref_unittest.cc +++ b/base/memory/safe_ref_unittest.cc
@@ -168,7 +168,7 @@ SafeRef<BaseClass> safe3(with.factory.GetSafeRef()); EXPECT_CHECK_DEATH(safe3 = std::move(safe)); } - EXPECT_CHECK_DEATH((void)safe->self->i); + EXPECT_CHECK_DEATH((void)safe->self->i); // NOLINT(bugprone-use-after-move) } TEST(SafeRefTest, InvalidAfterMoveAssignment) { @@ -199,7 +199,7 @@ SafeRef<BaseClass> safe3(with.factory.GetSafeRef()); EXPECT_CHECK_DEATH(safe3 = std::move(safe)); } - EXPECT_CHECK_DEATH((void)safe->self->i); + EXPECT_CHECK_DEATH((void)safe->self->i); // NOLINT(bugprone-use-after-move) } TEST(SafeRefTest, InvalidAfterMoveConversionConstruction) { @@ -229,6 +229,7 @@ SafeRef<ReallyBaseClass> safe3(with.factory.GetSafeRef()); EXPECT_CHECK_DEATH(safe3 = std::move(safe)); } + // NOLINTNEXTLINE(bugprone-use-after-move) EXPECT_CHECK_DEATH((void)static_cast<WithWeak*>(&*safe)->self->i); } @@ -260,6 +261,7 @@ SafeRef<ReallyBaseClass> safe3(with.factory.GetSafeRef()); EXPECT_CHECK_DEATH(safe3 = std::move(safe)); } + // NOLINTNEXTLINE(bugprone-use-after-move) EXPECT_CHECK_DEATH((void)static_cast<WithWeak*>(&*safe)->self->i); }
diff --git a/base/memory/singleton_unittest.cc b/base/memory/singleton_unittest.cc index 207dcd7..0a72154 100644 --- a/base/memory/singleton_unittest.cc +++ b/base/memory/singleton_unittest.cc
@@ -72,7 +72,7 @@ class CallbackSingleton { public: - CallbackSingleton() {} + CallbackSingleton() = default; CallbackFunc callback_ = nullptr; }; @@ -80,7 +80,7 @@ public: struct Trait : public CallbackTrait<CallbackSingletonWithNoLeakTrait> {}; - CallbackSingletonWithNoLeakTrait() {} + CallbackSingletonWithNoLeakTrait() = default; static CallbackSingletonWithNoLeakTrait* GetInstance() { return Singleton<CallbackSingletonWithNoLeakTrait, Trait>::get(); @@ -93,7 +93,7 @@ static const bool kRegisterAtExit = false; }; - CallbackSingletonWithLeakTrait() {} + CallbackSingletonWithLeakTrait() = default; static CallbackSingletonWithLeakTrait* GetInstance() { return Singleton<CallbackSingletonWithLeakTrait, Trait>::get(); @@ -104,7 +104,7 @@ public: struct Trait; - CallbackSingletonWithStaticTrait() {} + CallbackSingletonWithStaticTrait() = default; static CallbackSingletonWithStaticTrait* GetInstance() { return Singleton<CallbackSingletonWithStaticTrait, Trait>::get();
diff --git a/base/memory/weak_ptr_unittest.cc b/base/memory/weak_ptr_unittest.cc index 4ef396199..3fd68d84 100644 --- a/base/memory/weak_ptr_unittest.cc +++ b/base/memory/weak_ptr_unittest.cc
@@ -265,7 +265,7 @@ WeakPtr<int> ptr = factory.GetWeakPtr(); WeakPtr<int> ptr2 = factory.GetWeakPtr(); WeakPtr<int> ptr3 = std::move(ptr2); - EXPECT_NE(ptr.get(), ptr2.get()); + EXPECT_NE(ptr.get(), ptr2.get()); // NOLINT(bugprone-use-after-move) EXPECT_EQ(ptr.get(), ptr3.get()); }
diff --git a/base/message_loop/message_pump_glib_unittest.cc b/base/message_loop/message_pump_glib_unittest.cc index a2bcd7a2..dd24a57 100644 --- a/base/message_loop/message_pump_glib_unittest.cc +++ b/base/message_loop/message_pump_glib_unittest.cc
@@ -444,7 +444,7 @@ // Helper class that lets us run the GLib message loop. class GLibLoopRunner : public RefCounted<GLibLoopRunner> { public: - GLibLoopRunner() {} + GLibLoopRunner() = default; void RunGLib() { while (!quit_) {
diff --git a/base/message_loop/message_pump_perftest.cc b/base/message_loop/message_pump_perftest.cc index 602662d3..387ea66d 100644 --- a/base/message_loop/message_pump_perftest.cc +++ b/base/message_loop/message_pump_perftest.cc
@@ -62,7 +62,7 @@ class ScheduleWorkTest : public testing::Test { public: - ScheduleWorkTest() {} + ScheduleWorkTest() = default; void SetUp() override { if (base::ThreadTicks::IsSupported()) {
diff --git a/base/metrics/histogram_unittest.cc b/base/metrics/histogram_unittest.cc index 416b1d5c..8ac01aa 100644 --- a/base/metrics/histogram_unittest.cc +++ b/base/metrics/histogram_unittest.cc
@@ -1026,10 +1026,10 @@ Histogram* histogram = static_cast<Histogram*>(Histogram::FactoryGet( "AddCountHistogram", 10, 100, kBucketCount, HistogramBase::kNoFlags)); // Add samples in reverse order and make sure the output is in correct order. - histogram->AddCount(/*sample=*/30, /*value=*/14); - histogram->AddCount(/*sample=*/20, /*value=*/15); - histogram->AddCount(/*sample=*/20, /*value=*/15); - histogram->AddCount(/*sample=*/30, /*value=*/14); + histogram->AddCount(/*value=*/30, /*count=*/14); + histogram->AddCount(/*value=*/20, /*count=*/15); + histogram->AddCount(/*value=*/20, /*count=*/15); + histogram->AddCount(/*value=*/30, /*count=*/14); const CountAndBucketData count_and_data_bucket = GetCountAndBucketData(histogram); @@ -1058,7 +1058,7 @@ HistogramBase* histogram = LinearHistogram::FactoryGet("AsciiOut", /*minimum=*/1, /*maximum=*/10, /*bucket_count=*/5, HistogramBase::kNoFlags); - histogram->AddCount(/*sample=*/4, /*value=*/5); + histogram->AddCount(/*value=*/4, /*count=*/5); std::string output; histogram->WriteAscii(&output); @@ -1076,7 +1076,7 @@ HistogramBase* histogram = LinearHistogram::FactoryGet("HTMLOut", /*minimum=*/1, /*maximum=*/10, /*bucket_count=*/5, HistogramBase::kNoFlags); - histogram->AddCount(/*sample=*/4, /*value=*/5); + histogram->AddCount(/*value=*/4, /*count=*/5); base::Value::Dict output = histogram->ToGraphDict(); const std::string* header = output.FindString("header");
diff --git a/base/metrics/persistent_memory_allocator.cc b/base/metrics/persistent_memory_allocator.cc index 92f596a..b7aa612 100644 --- a/base/metrics/persistent_memory_allocator.cc +++ b/base/metrics/persistent_memory_allocator.cc
@@ -472,12 +472,11 @@ } } -PersistentMemoryAllocator::~PersistentMemoryAllocator() { - // It's strictly forbidden to do any memory access here in case there is - // some issue with the underlying memory segment. The "Local" allocator - // makes use of this to allow deletion of the segment on the heap from - // within its destructor. -} +// It's strictly forbidden to do any memory access inside this destructor in +// case there is some issue with the underlying memory segment. The "Local" +// allocator makes use of this to allow deletion of the segment on the heap from +// within its destructor. +PersistentMemoryAllocator::~PersistentMemoryAllocator() = default; uint64_t PersistentMemoryAllocator::Id() const { return shared_meta()->id;
diff --git a/base/metrics/persistent_memory_allocator_unittest.cc b/base/metrics/persistent_memory_allocator_unittest.cc index 0125a76..63d045b 100644 --- a/base/metrics/persistent_memory_allocator_unittest.cc +++ b/base/metrics/persistent_memory_allocator_unittest.cc
@@ -410,7 +410,7 @@ // Fill up the allocator until it is full. Reference ref; - while ((ref = allocator_->Allocate(/*size=*/1, /*type=*/0)) != 0) { + while ((ref = allocator_->Allocate(/*size=*/1, /*type_id=*/0)) != 0) { refs.push_back(ref); }
diff --git a/base/metrics/sparse_histogram_unittest.cc b/base/metrics/sparse_histogram_unittest.cc index e364056..84bb6c3c 100644 --- a/base/metrics/sparse_histogram_unittest.cc +++ b/base/metrics/sparse_histogram_unittest.cc
@@ -476,10 +476,10 @@ TEST_P(SparseHistogramTest, CheckGetCountAndBucketData) { std::unique_ptr<SparseHistogram> histogram(NewSparseHistogram("Sparse")); // Add samples in reverse order and make sure the output is in correct order. - histogram->AddCount(/*sample=*/200, /*count=*/15); - histogram->AddCount(/*sample=*/100, /*count=*/5); + histogram->AddCount(/*value=*/200, /*count=*/15); + histogram->AddCount(/*value=*/100, /*count=*/5); // Add samples to the same bucket and make sure they'll be aggregated. - histogram->AddCount(/*sample=*/100, /*count=*/5); + histogram->AddCount(/*value=*/100, /*count=*/5); const CountAndBucketData count_and_data_bucket = GetCountAndBucketData(histogram.get()); @@ -507,8 +507,8 @@ TEST_P(SparseHistogramTest, WriteAscii) { HistogramBase* histogram = SparseHistogram::FactoryGet("AsciiOut", HistogramBase::kNoFlags); - histogram->AddCount(/*sample=*/4, /*count=*/5); - histogram->AddCount(/*sample=*/10, /*count=*/15); + histogram->AddCount(/*value=*/4, /*count=*/5); + histogram->AddCount(/*value=*/10, /*count=*/15); std::string output; histogram->WriteAscii(&output); @@ -524,8 +524,8 @@ TEST_P(SparseHistogramTest, ToGraphDict) { HistogramBase* histogram = SparseHistogram::FactoryGet("HTMLOut", HistogramBase::kNoFlags); - histogram->AddCount(/*sample=*/4, /*count=*/5); - histogram->AddCount(/*sample=*/10, /*count=*/15); + histogram->AddCount(/*value=*/4, /*count=*/5); + histogram->AddCount(/*value=*/10, /*count=*/15); base::Value::Dict output = histogram->ToGraphDict(); std::string* header = output.FindString("header");
diff --git a/base/observer_list_threadsafe_unittest.cc b/base/observer_list_threadsafe_unittest.cc index 058aba5b4..ce75f05 100644 --- a/base/observer_list_threadsafe_unittest.cc +++ b/base/observer_list_threadsafe_unittest.cc
@@ -309,16 +309,21 @@ using TestThread = AddRemoveThread<RemovePolicy>; std::vector<std::unique_ptr<TestThread>> threaded_observers; threaded_observers.reserve(num_threads); - scoped_refptr<SingleThreadTaskRunner> removal_task_runner; - for (int index = 0; index < num_threads; index++) { - auto add_remove_thread = - std::make_unique<TestThread>(observer_list.get(), cross_thread_notifies, - std::move(removal_task_runner)); - if (cross_thread_removes) { + if (cross_thread_removes) { + scoped_refptr<SingleThreadTaskRunner> removal_task_runner; + for (int index = 0; index < num_threads; ++index) { + auto add_remove_thread = std::make_unique<TestThread>( + observer_list.get(), cross_thread_notifies, + std::move(removal_task_runner)); // Save the task runner to pass to the next thread. removal_task_runner = add_remove_thread->task_runner(); + threaded_observers.push_back(std::move(add_remove_thread)); } - threaded_observers.push_back(std::move(add_remove_thread)); + } else { + for (int index = 0; index < num_threads; ++index) { + threaded_observers.push_back(std::make_unique<TestThread>( + observer_list.get(), cross_thread_notifies, nullptr)); + } } ASSERT_EQ(static_cast<size_t>(num_threads), threaded_observers.size());
diff --git a/base/process/process_unittest.cc b/base/process/process_unittest.cc index 656f9f8..1d8579c 100644 --- a/base/process/process_unittest.cc +++ b/base/process/process_unittest.cc
@@ -141,14 +141,14 @@ process2 = std::move(process1); EXPECT_TRUE(process2.IsValid()); - EXPECT_FALSE(process1.IsValid()); + EXPECT_FALSE(process1.IsValid()); // NOLINT(bugprone-use-after-move) EXPECT_FALSE(process2.is_current()); Process process3 = Process::Current(); process2 = std::move(process3); EXPECT_TRUE(process2.is_current()); EXPECT_TRUE(process2.IsValid()); - EXPECT_FALSE(process3.IsValid()); + EXPECT_FALSE(process3.IsValid()); // NOLINT(bugprone-use-after-move) } TEST_F(ProcessTest, Duplicate) {
diff --git a/base/profiler/stack_sampler_unittest.cc b/base/profiler/stack_sampler_unittest.cc index 8b2c7d9..5348c7c 100644 --- a/base/profiler/stack_sampler_unittest.cc +++ b/base/profiler/stack_sampler_unittest.cc
@@ -229,7 +229,7 @@ class FakeTestUnwinder : public Unwinder { public: struct Result { - Result(bool can_unwind) + explicit Result(bool can_unwind) : can_unwind(can_unwind), result(UnwindResult::kUnrecognizedFrame) {} Result(UnwindResult result, std::vector<uintptr_t> instruction_pointers) @@ -548,8 +548,9 @@ // Inject a fake native module for the second frame. module_cache_.AddCustomNativeModule(std::make_unique<TestModule>(1u, 1u)); - auto aux_unwinder = WrapUnique( - new FakeTestUnwinder({{UnwindResult::kUnrecognizedFrame, {1u}}, false})); + auto aux_unwinder = + WrapUnique(new FakeTestUnwinder({{UnwindResult::kUnrecognizedFrame, {1u}}, + FakeTestUnwinder::Result(false)})); aux_unwinder->Initialize(&module_cache_); auto native_unwinder = WrapUnique(new FakeTestUnwinder({{UnwindResult::kCompleted, {2u}}})); @@ -578,8 +579,10 @@ module_cache_.UpdateNonNativeModules( {}, ToModuleVector(std::make_unique<TestModule>(1u, 1u, false))); - auto aux_unwinder = WrapUnique(new FakeTestUnwinder( - {{false}, {UnwindResult::kUnrecognizedFrame, {2u}}, {false}})); + auto aux_unwinder = + WrapUnique(new FakeTestUnwinder({FakeTestUnwinder::Result(false), + {UnwindResult::kUnrecognizedFrame, {2u}}, + FakeTestUnwinder::Result(false)})); aux_unwinder->Initialize(&module_cache_); auto native_unwinder = WrapUnique(new FakeTestUnwinder({{UnwindResult::kUnrecognizedFrame, {1u}},
diff --git a/base/ranges/algorithm_unittest.cc b/base/ranges/algorithm_unittest.cc index ea91deb..9f78dbf 100644 --- a/base/ranges/algorithm_unittest.cc +++ b/base/ranges/algorithm_unittest.cc
@@ -47,7 +47,8 @@ struct Int { constexpr Int() = default; - constexpr Int(int value) : value(value) {} + constexpr Int(int value) // NOLINT(google-explicit-constructor) + : value(value) {} int value = 0; }; @@ -56,25 +57,14 @@ return lhs.value == rhs.value; } -constexpr bool operator<(Int lhs, Int rhs) { - return lhs.value < rhs.value; -} - -constexpr bool operator>(Int lhs, Int rhs) { - return lhs.value > rhs.value; -} - -constexpr bool operator<=(Int lhs, Int rhs) { - return lhs.value <= rhs.value; -} - -constexpr bool operator>=(Int lhs, Int rhs) { - return lhs.value >= rhs.value; +constexpr auto operator<=>(Int lhs, Int rhs) { + return lhs.value <=> rhs.value; } // Move-only int that clears `value` when moving out. struct MoveOnlyInt { - MoveOnlyInt(int value) : value(value) {} + MoveOnlyInt(int value) // NOLINT(google-explicit-constructor) + : value(value) {} MoveOnlyInt(MoveOnlyInt&& other) : value(std::exchange(other.value, 0)) {} MoveOnlyInt& operator=(MoveOnlyInt&& other) { @@ -386,8 +376,8 @@ EXPECT_TRUE(ranges::is_permutation( ints1, ints2, [](Int lhs, Int rhs) { return lhs.value == rhs.value; })); - EXPECT_TRUE( - ranges::is_permutation(ints1, ints2, ranges::equal_to{}, &Int::value)); + EXPECT_TRUE(ranges::is_permutation(ints1, ints2, ranges::equal_to{}, + &Int::value, &Int::value)); EXPECT_FALSE(ranges::is_permutation(array1, ints2, ranges::equal_to{}, {}, &Int::value));
diff --git a/base/scoped_generic_unittest.cc b/base/scoped_generic_unittest.cc index 9c36d43..913a516 100644 --- a/base/scoped_generic_unittest.cc +++ b/base/scoped_generic_unittest.cc
@@ -75,7 +75,8 @@ ScopedInt a(kFirst, traits); ScopedInt b(std::move(a)); EXPECT_TRUE(values_freed.empty()); // Nothing should be freed. - ASSERT_EQ(IntTraits::InvalidValue(), a.get()); + ASSERT_EQ(IntTraits::InvalidValue(), + a.get()); // NOLINT(bugprone-use-after-move) ASSERT_EQ(kFirst, b.get()); } @@ -90,7 +91,8 @@ b = std::move(a); ASSERT_EQ(1u, values_freed.size()); EXPECT_EQ(kSecond, values_freed[0]); - ASSERT_EQ(IntTraits::InvalidValue(), a.get()); + ASSERT_EQ(IntTraits::InvalidValue(), + a.get()); // NOLINT(bugprone-use-after-move) ASSERT_EQ(kFirst, b.get()); }
diff --git a/base/task/common/operations_controller_unittest.cc b/base/task/common/operations_controller_unittest.cc index ffd5c2a1d..879d5a3 100644 --- a/base/task/common/operations_controller_unittest.cc +++ b/base/task/common/operations_controller_unittest.cc
@@ -100,7 +100,7 @@ auto operation_token_1 = controller.TryBeginOperation(); auto operation_token_2 = std::move(operation_token_1); - EXPECT_FALSE(operation_token_1); + EXPECT_FALSE(operation_token_1); // NOLINT(bugprone-use-after-move) EXPECT_TRUE(operation_token_2); }
diff --git a/base/task/sequence_manager/sequence_manager_impl.h b/base/task/sequence_manager/sequence_manager_impl.h index 4e3c9f0..727f915 100644 --- a/base/task/sequence_manager/sequence_manager_impl.h +++ b/base/task/sequence_manager/sequence_manager_impl.h
@@ -137,13 +137,13 @@ // SequencedTaskSource implementation: void SetRunTaskSynchronouslyAllowed( bool can_run_tasks_synchronously) override; - std::optional<SelectedTask> SelectNextTask( - LazyNow& lazy_now, - SelectTaskOption option = SelectTaskOption::kDefault) override; + using internal::SequencedTaskSource::SelectNextTask; + std::optional<SelectedTask> SelectNextTask(LazyNow& lazy_now, + SelectTaskOption option) override; void DidRunTask(LazyNow& lazy_now) override; - std::optional<WakeUp> GetPendingWakeUp( - LazyNow* lazy_now, - SelectTaskOption option = SelectTaskOption::kDefault) override; + using internal::SequencedTaskSource::GetPendingWakeUp; + std::optional<WakeUp> GetPendingWakeUp(LazyNow* lazy_now, + SelectTaskOption option) override; bool HasPendingHighResolutionTasks() override; void OnBeginWork() override; bool OnIdle() override;
diff --git a/base/task/sequence_manager/sequenced_task_source.h b/base/task/sequence_manager/sequenced_task_source.h index 4446721..94c0fcf7 100644 --- a/base/task/sequence_manager/sequenced_task_source.h +++ b/base/task/sequence_manager/sequenced_task_source.h
@@ -67,7 +67,10 @@ // |option| allows control on which kind of tasks can be selected. virtual std::optional<SelectedTask> SelectNextTask( LazyNow& lazy_now, - SelectTaskOption option = SelectTaskOption::kDefault) = 0; + SelectTaskOption option) = 0; + std::optional<SelectedTask> SelectNextTask(LazyNow& lazy_now) { + return SelectNextTask(lazy_now, SelectTaskOption::kDefault); + } // Notifies this source that the task previously obtained // from SelectNextTask() has been completed. @@ -77,9 +80,11 @@ // next task can run immediately, or nullopt if there are no more immediate or // delayed tasks. |option| allows control on which kind of tasks can be // selected. May delete canceled tasks. - virtual std::optional<WakeUp> GetPendingWakeUp( - LazyNow* lazy_now, - SelectTaskOption option = SelectTaskOption::kDefault) = 0; + virtual std::optional<WakeUp> GetPendingWakeUp(LazyNow* lazy_now, + SelectTaskOption option) = 0; + std::optional<WakeUp> GetPendingWakeUp(LazyNow* lazy_now) { + return GetPendingWakeUp(lazy_now, SelectTaskOption::kDefault); + } // Return true if there are any pending tasks in the task source which require // high resolution timing.
diff --git a/base/task/single_thread_task_executor_unittest.cc b/base/task/single_thread_task_executor_unittest.cc index 77d7d053..2062a388 100644 --- a/base/task/single_thread_task_executor_unittest.cc +++ b/base/task/single_thread_task_executor_unittest.cc
@@ -69,7 +69,7 @@ class Foo : public RefCounted<Foo> { public: - Foo() {} + Foo() = default; Foo(const Foo&) = delete; Foo& operator=(const Foo&) = delete;
diff --git a/base/task/thread_pool/pooled_single_thread_task_runner_manager.cc b/base/task/thread_pool/pooled_single_thread_task_runner_manager.cc index 50221da..a00bbee 100644 --- a/base/task/thread_pool/pooled_single_thread_task_runner_manager.cc +++ b/base/task/thread_pool/pooled_single_thread_task_runner_manager.cc
@@ -884,18 +884,23 @@ } } - for (size_t i = 0; i < std::size(local_shared_worker_threads); ++i) { - for (size_t j = 0; j < std::size(local_shared_worker_threads[i]); ++j) { - if (local_shared_worker_threads[i][j]) { - UnregisterWorkerThread(local_shared_worker_threads[i][j]); + for (auto& threads : local_shared_worker_threads) { + for (auto* thread : threads) { + if (thread) { + UnregisterWorkerThread(thread); } -#if BUILDFLAG(IS_WIN) - if (local_shared_com_worker_threads[i][j]) { - UnregisterWorkerThread(local_shared_com_worker_threads[i][j]); - } -#endif } } + +#if BUILDFLAG(IS_WIN) + for (auto& com_threads : local_shared_com_worker_threads) { + for (auto* com_thread : com_threads) { + if (com_thread) { + UnregisterWorkerThread(com_thread); + } + } + } +#endif } } // namespace base::internal
diff --git a/base/task/thread_pool/thread_group_impl.h b/base/task/thread_pool/thread_group_impl.h index 153fb30b..b015309 100644 --- a/base/task/thread_pool/thread_group_impl.h +++ b/base/task/thread_pool/thread_group_impl.h
@@ -64,9 +64,19 @@ scoped_refptr<SingleThreadTaskRunner> service_thread_task_runner, WorkerThreadObserver* worker_thread_observer, WorkerEnvironment worker_environment, - bool synchronous_thread_start_for_testing = false, - std::optional<TimeDelta> may_block_threshold = - std::optional<TimeDelta>()) override; + bool synchronous_thread_start_for_testing, + std::optional<TimeDelta> may_block_threshold) override; + void Start(size_t max_tasks, + size_t max_best_effort_tasks, + TimeDelta suggested_reclaim_time, + scoped_refptr<SingleThreadTaskRunner> service_thread_task_runner, + WorkerThreadObserver* worker_thread_observer, + WorkerEnvironment worker_environment, + bool synchronous_thread_start_for_testing = false) { + Start(max_tasks, max_best_effort_tasks, suggested_reclaim_time, + service_thread_task_runner, worker_thread_observer, + worker_environment, synchronous_thread_start_for_testing, {}); + } void JoinForTesting() override; void DidUpdateCanRunPolicy() override; void OnShutdownStarted() override;
diff --git a/base/task/thread_pool/worker_thread.cc b/base/task/thread_pool/worker_thread.cc index c949a05..cdd5e2c 100644 --- a/base/task/thread_pool/worker_thread.cc +++ b/base/task/thread_pool/worker_thread.cc
@@ -490,7 +490,7 @@ // Check that task_source is always cleared, to help investigation of // memory corruption where task_source is non-null after being moved. // crbug.com/1218384 - CHECK(!task_source); + CHECK(!task_source); // NOLINT(bugprone-use-after-move) task_source = std::move(new_task_source); } }
diff --git a/base/test/android/javatests/src/org/chromium/base/test/util/BaseRestrictions.java b/base/test/android/javatests/src/org/chromium/base/test/util/BaseRestrictions.java index ec0580f..cdf64036 100644 --- a/base/test/android/javatests/src/org/chromium/base/test/util/BaseRestrictions.java +++ b/base/test/android/javatests/src/org/chromium/base/test/util/BaseRestrictions.java
@@ -11,6 +11,7 @@ import androidx.test.platform.app.InstrumentationRegistry; import org.chromium.base.SysUtils; +import org.chromium.build.BuildConfig; /** Restriction handlers for restrictions in Restrictions. */ public class BaseRestrictions { @@ -46,5 +47,8 @@ Restriction.RESTRICTION_TYPE_INTERNET, () -> !isNetworkAvailable()); restrictionSkipCheck.addHandler( Restriction.RESTRICTION_TYPE_HAS_CAMERA, () -> !hasCamera()); + restrictionSkipCheck.addHandler( + Restriction.RESTRICTION_TYPE_NON_CHROME_BRANDED, + () -> BuildConfig.IS_CHROME_BRANDED); } }
diff --git a/base/test/android/javatests/src/org/chromium/base/test/util/Restriction.java b/base/test/android/javatests/src/org/chromium/base/test/util/Restriction.java index c7ce93a..2e4822bd 100644 --- a/base/test/android/javatests/src/org/chromium/base/test/util/Restriction.java +++ b/base/test/android/javatests/src/org/chromium/base/test/util/Restriction.java
@@ -32,6 +32,9 @@ /** Specifies the test is only valid on a device that has a camera. */ String RESTRICTION_TYPE_HAS_CAMERA = "Has_Camera"; + /** Specifies the test is only valid for non-Chrome branded builds. */ + String RESTRICTION_TYPE_NON_CHROME_BRANDED = "Non_Chrome_Branded"; + /** * @return A list of restrictions. */
diff --git a/base/test/launcher/test_results_tracker.cc b/base/test/launcher/test_results_tracker.cc index 5037ced..9b9e170 100644 --- a/base/test/launcher/test_results_tracker.cc +++ b/base/test/launcher/test_results_tracker.cc
@@ -54,7 +54,7 @@ } struct TestSuiteResultsAggregator { - TestSuiteResultsAggregator() {} + TestSuiteResultsAggregator() = default; void Add(const TestResult& result) { tests++;
diff --git a/base/threading/sequence_local_storage_slot_unittest.cc b/base/threading/sequence_local_storage_slot_unittest.cc index a6d447ab..4f55032 100644 --- a/base/threading/sequence_local_storage_slot_unittest.cc +++ b/base/threading/sequence_local_storage_slot_unittest.cc
@@ -192,10 +192,9 @@ class TestNoAddressOfOperator { public: TestNoAddressOfOperator() = default; - ~TestNoAddressOfOperator() { - // Define a non-trivial destructor so that SequenceLocalStorageSlot - // will use the external value path. - } + // Define a non-trivial destructor so that SequenceLocalStorageSlot will use + // the external value path. + ~TestNoAddressOfOperator() {} // NOLINT(modernize-use-equals-default) // See note above class definition for the reason this operator is deleted. TestNoAddressOfOperator* operator&() = delete; };
diff --git a/base/threading/thread_collision_warner_unittest.cc b/base/threading/thread_collision_warner_unittest.cc index 5471f54..f8a06fd7 100644 --- a/base/threading/thread_collision_warner_unittest.cc +++ b/base/threading/thread_collision_warner_unittest.cc
@@ -39,7 +39,7 @@ // place. class AssertReporter : public base::AsserterBase { public: - AssertReporter() {} + AssertReporter() = default; void warn() override { failed_ = true; }
diff --git a/base/timer/timer_unittest.cc b/base/timer/timer_unittest.cc index 563796e..6b49f16 100644 --- a/base/timer/timer_unittest.cc +++ b/base/timer/timer_unittest.cc
@@ -41,7 +41,7 @@ class Receiver { public: - Receiver() {} + Receiver() = default; void OnCalled() { count_++; } bool WasCalled() { return count_ > 0; } int TimesCalled() { return count_; }
diff --git a/base/trace_event/trace_arguments_unittest.cc b/base/trace_event/trace_arguments_unittest.cc index 97483e1..69f5d26f 100644 --- a/base/trace_event/trace_arguments_unittest.cc +++ b/base/trace_event/trace_arguments_unittest.cc
@@ -346,7 +346,7 @@ EXPECT_FALSE(destroy_flag); // |args1| is now empty. - EXPECT_EQ(0U, args1.size()); + EXPECT_EQ(0U, args1.size()); // NOLINT(bugprone-use-after-move) // Check that everything was transferred to |args2|. EXPECT_EQ(2U, args2.size()); @@ -387,7 +387,7 @@ EXPECT_FALSE(destroy_flag); // |args1| is now empty. - EXPECT_EQ(0U, args1.size()); + EXPECT_EQ(0U, args1.size()); // NOLINT(bugprone-use-after-move) // Check that everything was transferred to |args2|. EXPECT_EQ(2U, args2.size());
diff --git a/base/traits_bag_unittest.cc b/base/traits_bag_unittest.cc index 738119d..9704211 100644 --- a/base/traits_bag_unittest.cc +++ b/base/traits_bag_unittest.cc
@@ -22,9 +22,9 @@ struct TestTraits { // List of traits that are valid inputs for the constructor below. struct ValidTrait { - ValidTrait(ExampleTrait); - ValidTrait(EnumTraitA); - ValidTrait(EnumTraitB); + explicit ValidTrait(ExampleTrait); + explicit ValidTrait(EnumTraitA); + explicit ValidTrait(EnumTraitB); }; template <class... ArgTypes> @@ -52,7 +52,7 @@ struct RequiredEnumTestTraits { // List of traits that are required inputs for the constructor below. struct ValidTrait { - ValidTrait(EnumTraitA); + explicit ValidTrait(EnumTraitA); }; // We require EnumTraitA to be specified. @@ -67,7 +67,7 @@ struct OptionalEnumTestTraits { // List of traits that are optional inputs for the constructor below. struct ValidTrait { - ValidTrait(EnumTraitA); + explicit ValidTrait(EnumTraitA); }; // EnumTraitA can optionally be specified. @@ -162,12 +162,14 @@ TEST(TraitsBagTest, ValidTraitInheritance) { struct ValidTraitsA { - ValidTraitsA(EnumTraitA); + // For inheritance to work transparently, all constructors but the last in + // the chain must be implicit. + ValidTraitsA(EnumTraitA); // NOLINT(google-explicit-constructor) }; struct ValidTraitsB { - ValidTraitsB(ValidTraitsA); - ValidTraitsB(EnumTraitB); + explicit ValidTraitsB(ValidTraitsA); + explicit ValidTraitsB(EnumTraitB); }; static_assert(AreValidTraits<ValidTraitsA, EnumTraitA>, "");
diff --git a/base/types/optional_unittest.cc b/base/types/optional_unittest.cc index 87ff007..586a49f 100644 --- a/base/types/optional_unittest.cc +++ b/base/types/optional_unittest.cc
@@ -103,7 +103,7 @@ class NonTriviallyDestructible { public: - ~NonTriviallyDestructible() {} + ~NonTriviallyDestructible() {} // NOLINT(modernize-use-equals-default) }; class DeletedDefaultConstructor { @@ -194,6 +194,7 @@ class NonTriviallyDestructibleOverloadAddressOf { public: + // NOLINTNEXTLINE(modernize-use-equals-default) ~NonTriviallyDestructibleOverloadAddressOf() {} NonTriviallyDestructibleOverloadAddressOf* operator&() { EXPECT_TRUE(false); @@ -561,7 +562,7 @@ { struct Test { - Test(int a) {} // NOLINT(runtime/explicit) + Test(int a) {} // NOLINT(google-explicit-constructor) }; // If T is convertible from U, it is not marked as explicit. static_assert(std::is_convertible_v<int, Test>, @@ -902,8 +903,9 @@ std::optional<Test2> b; b = std::move(a); - EXPECT_TRUE(!!a); + EXPECT_TRUE(!!a); // NOLINT(bugprone-use-after-move) EXPECT_TRUE(!!b); + // NOLINTNEXTLINE(bugprone-use-after-move) EXPECT_EQ(Test1::State::MOVED, a->state); EXPECT_EQ(Test2::State::MOVE_CONSTRUCTED_FROM_TEST1, b->state); } @@ -913,8 +915,9 @@ std::optional<Test2> b(std::in_place); b = std::move(a); - EXPECT_TRUE(!!a); + EXPECT_TRUE(!!a); // NOLINT(bugprone-use-after-move) EXPECT_TRUE(!!b); + // NOLINTNEXTLINE(bugprone-use-after-move) EXPECT_EQ(Test1::State::MOVED, a->state); EXPECT_EQ(Test2::State::MOVE_ASSIGNED_FROM_TEST1, b->state); } @@ -1003,8 +1006,9 @@ std::optional<Test3> b; b = std::move(a); - EXPECT_TRUE(!!a); + EXPECT_TRUE(!!a); // NOLINT(bugprone-use-after-move) EXPECT_TRUE(!!b); + // NOLINTNEXTLINE(bugprone-use-after-move) EXPECT_EQ(Test1::State::MOVED, a->state); EXPECT_EQ(Test3::State::MOVE_CONSTRUCTED_FROM_OPTIONAL_TEST1, b->state); } @@ -1014,8 +1018,9 @@ std::optional<Test3> b(std::in_place); b = std::move(a); - EXPECT_TRUE(!!a); + EXPECT_TRUE(!!a); // NOLINT(bugprone-use-after-move) EXPECT_TRUE(!!b); + // NOLINTNEXTLINE(bugprone-use-after-move) EXPECT_EQ(Test1::State::MOVED, a->state); EXPECT_EQ(Test3::State::MOVE_ASSIGNED_FROM_OPTIONAL_TEST1, b->state); } @@ -2190,29 +2195,29 @@ // Trivial copy ctor, non-trivial move ctor, nothrow move assign. struct Test1 { Test1(const Test1&) = default; - Test1(Test1&&) {} + Test1(Test1&&) {} // NOLINT(modernize-use-equals-default) Test1& operator=(Test1&&) = default; }; // Non-trivial copy ctor, trivial move ctor, throw move assign. struct Test2 { - Test2(const Test2&) {} + Test2(const Test2&) {} // NOLINT(modernize-use-equals-default) Test2(Test2&&) = default; Test2& operator=(Test2&&) { return *this; } }; // Trivial copy ctor, non-trivial nothrow move ctor. struct Test3 { Test3(const Test3&) = default; - Test3(Test3&&) noexcept {} + Test3(Test3&&) noexcept {} // NOLINT(modernize-use-equals-default) }; // Non-trivial copy ctor, non-trivial nothrow move ctor. struct Test4 { - Test4(const Test4&) {} - Test4(Test4&&) noexcept {} + Test4(const Test4&) {} // NOLINT(modernize-use-equals-default) + Test4(Test4&&) noexcept {} // NOLINT(modernize-use-equals-default) }; // Non-trivial copy ctor, non-trivial move ctor. struct Test5 { - Test5(const Test5&) {} - Test5(Test5&&) {} + Test5(const Test5&) {} // NOLINT(modernize-use-equals-default) + Test5(Test5&&) {} // NOLINT(modernize-use-equals-default) }; static_assert(
diff --git a/base/types/strong_alias_unittest.cc b/base/types/strong_alias_unittest.cc index bf07719..11da4e7 100644 --- a/base/types/strong_alias_unittest.cc +++ b/base/types/strong_alias_unittest.cc
@@ -149,7 +149,7 @@ { Ptr ignore(*std::move(a)); } { Ptr ignore(std::move(*b)); } - EXPECT_FALSE(a.value()); + EXPECT_FALSE(a.value()); // NOLINT(bugprone-use-after-move) EXPECT_FALSE(b.value()); } @@ -168,7 +168,7 @@ { Ptr ignore(std::move(a).value()); } { Ptr ignore(std::move(b.value())); } - EXPECT_FALSE(a.value()); + EXPECT_FALSE(a.value()); // NOLINT(bugprone-use-after-move) EXPECT_FALSE(b.value()); }
diff --git a/base/values_unittest.cc b/base/values_unittest.cc index 07942b5..d3f1d6dd 100644 --- a/base/values_unittest.cc +++ b/base/values_unittest.cc
@@ -1147,7 +1147,7 @@ std::string movable_value("movable_value"); dict.Set("movable_key", std::move(movable_value)); - ASSERT_TRUE(movable_value.empty()); + ASSERT_TRUE(movable_value.empty()); // NOLINT(bugprone-use-after-move) const std::string* value;
diff --git a/build/rust/std/BUILD.gn b/build/rust/std/BUILD.gn index 68b085b..6b996aa1 100644 --- a/build/rust/std/BUILD.gn +++ b/build/rust/std/BUILD.gn
@@ -89,7 +89,7 @@ # These are no longer present in the Windows toolchain. stdlib_files += [ "addr2line", - "adler", + "adler2", "gimli", "libc", "memchr",
diff --git a/build/rust/std/rules/BUILD.gn b/build/rust/std/rules/BUILD.gn index 6b59b089..e44d6388 100644 --- a/build/rust/std/rules/BUILD.gn +++ b/build/rust/std/rules/BUILD.gn
@@ -8,12 +8,17 @@ cargo_crate("addr2line") { crate_type = "rlib" - crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/addr2line-0.22.0/src/lib.rs" + crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/addr2line-0.24.2/src/lib.rs" sources = [ - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/addr2line-0.22.0/src/builtin_split_dwarf_loader.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/addr2line-0.22.0/src/function.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/addr2line-0.22.0/src/lazy.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/addr2line-0.22.0/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/addr2line-0.24.2/src/bin/addr2line.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/addr2line-0.24.2/src/frame.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/addr2line-0.24.2/src/function.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/addr2line-0.24.2/src/lazy.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/addr2line-0.24.2/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/addr2line-0.24.2/src/line.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/addr2line-0.24.2/src/loader.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/addr2line-0.24.2/src/lookup.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/addr2line-0.24.2/src/unit.rs", ] inputs = [] no_std = true @@ -21,7 +26,7 @@ # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false edition = "2018" - cargo_pkg_version = "0.22.0" + cargo_pkg_version = "0.24.2" cargo_pkg_name = "addr2line" cargo_pkg_description = "A cross-platform symbolication library written in Rust, using `gimli`" @@ -65,22 +70,22 @@ output_dir = "$root_out_dir/local_rustc_sysroot/lib/rustlib/$rust_abi_target/lib/" } -cargo_crate("adler") { +cargo_crate("adler2") { crate_type = "rlib" - crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/adler-1.0.2/src/lib.rs" + crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/adler2-2.0.0/src/lib.rs" sources = [ - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/adler-1.0.2/src/algo.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/adler-1.0.2/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/adler2-2.0.0/src/algo.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/adler2-2.0.0/src/lib.rs", ] inputs = [] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - edition = "2015" - cargo_pkg_version = "1.0.2" - cargo_pkg_authors = "Jonas Schievink <jonasschievink@gmail.com>" - cargo_pkg_name = "adler" + edition = "2021" + cargo_pkg_version = "2.0.0" + cargo_pkg_authors = "Jonas Schievink <jonasschievink@gmail.com>, oyvindln <oyvindln@users.noreply.github.com>" + cargo_pkg_name = "adler2" cargo_pkg_description = "A simple clean-room implementation of the Adler-32 checksum" library_configs -= [ @@ -287,179 +292,179 @@ } cargo_crate("compiler_builtins") { crate_type = "rlib" - crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/lib.rs" + crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/lib.rs" sources = [ - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/aarch64.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/aarch64_linux.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/arm.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/arm_linux.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/float/add.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/float/cmp.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/float/conv.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/float/div.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/float/extend.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/float/mod.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/float/mul.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/float/pow.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/float/sub.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/float/trunc.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/hexagon.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/int/addsub.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/int/big.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/int/bswap.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/int/leading_zeros.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/int/mod.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/int/mul.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/int/sdiv.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/int/shift.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/int/specialized_div_rem/asymmetric.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/int/specialized_div_rem/binary_long.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/int/specialized_div_rem/delegate.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/int/specialized_div_rem/mod.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/int/specialized_div_rem/norm_shift.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/int/specialized_div_rem/trifecta.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/int/trailing_zeros.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/int/udiv.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/lib.miri.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/lib.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/macros.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/math.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/mem/impls.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/mem/mod.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/mem/x86_64.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/probestack.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/riscv.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/x86.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/x86_64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/aarch64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/aarch64_linux.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/arm.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/arm_linux.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/float/add.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/float/cmp.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/float/conv.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/float/div.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/float/extend.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/float/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/float/mul.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/float/pow.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/float/sub.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/float/trunc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/hexagon.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/int/addsub.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/int/big.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/int/bswap.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/int/leading_zeros.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/int/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/int/mul.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/int/sdiv.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/int/shift.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/int/specialized_div_rem/asymmetric.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/int/specialized_div_rem/binary_long.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/int/specialized_div_rem/delegate.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/int/specialized_div_rem/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/int/specialized_div_rem/norm_shift.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/int/specialized_div_rem/trifecta.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/int/trailing_zeros.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/int/udiv.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/lib.miri.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/macros.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/math.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/mem/impls.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/mem/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/mem/x86_64.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/probestack.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/riscv.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/x86.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/x86_64.rs", ] inputs = [ - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/acos.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/acosf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/acosh.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/acoshf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/asin.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/asinf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/asinh.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/asinhf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/atan.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/atan2.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/atan2f.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/atanf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/atanh.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/atanhf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/cbrt.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/cbrtf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/ceil.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/ceilf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/copysign.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/copysignf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/cos.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/cosf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/cosh.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/coshf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/erf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/erff.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/exp.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/exp10.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/exp10f.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/exp2.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/exp2f.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/expf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/expm1.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/expm1f.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/expo2.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/fabs.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/fabsf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/fdim.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/fdimf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/fenv.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/floor.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/floorf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/fma.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/fmaf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/fmax.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/fmaxf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/fmin.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/fminf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/fmod.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/fmodf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/frexp.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/frexpf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/hypot.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/hypotf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/ilogb.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/ilogbf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/j0.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/j0f.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/j1.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/j1f.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/jn.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/jnf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/k_cos.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/k_cosf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/k_expo2.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/k_expo2f.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/k_sin.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/k_sinf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/k_tan.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/k_tanf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/ldexp.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/ldexpf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/lgamma.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/lgamma_r.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/lgammaf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/lgammaf_r.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/log.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/log10.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/log10f.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/log1p.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/log1pf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/log2.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/log2f.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/logf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/mod.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/modf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/modff.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/nextafter.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/nextafterf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/pow.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/powf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/rem_pio2.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/rem_pio2_large.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/rem_pio2f.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/remainder.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/remainderf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/remquo.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/remquof.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/rint.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/rintf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/round.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/roundf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/scalbn.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/scalbnf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/sin.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/sincos.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/sincosf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/sinf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/sinh.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/sinhf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/sqrt.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/sqrtf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/tan.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/tanf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/tanh.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/tanhf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/tgamma.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/tgammaf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/trunc.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../libm/src/math/truncf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/acos.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/acosf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/acosh.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/acoshf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/asin.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/asinf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/asinh.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/asinhf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/atan.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/atan2.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/atan2f.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/atanf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/atanh.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/atanhf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/cbrt.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/cbrtf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/ceil.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/ceilf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/copysign.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/copysignf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/cos.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/cosf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/cosh.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/coshf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/erf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/erff.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/exp.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/exp10.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/exp10f.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/exp2.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/exp2f.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/expf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/expm1.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/expm1f.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/expo2.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/fabs.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/fabsf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/fdim.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/fdimf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/fenv.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/floor.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/floorf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/fma.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/fmaf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/fmax.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/fmaxf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/fmin.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/fminf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/fmod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/fmodf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/frexp.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/frexpf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/hypot.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/hypotf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/ilogb.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/ilogbf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/j0.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/j0f.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/j1.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/j1f.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/jn.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/jnf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/k_cos.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/k_cosf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/k_expo2.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/k_expo2f.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/k_sin.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/k_sinf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/k_tan.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/k_tanf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/ldexp.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/ldexpf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/lgamma.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/lgamma_r.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/lgammaf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/lgammaf_r.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/log.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/log10.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/log10f.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/log1p.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/log1pf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/log2.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/log2f.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/logf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/modf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/modff.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/nextafter.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/nextafterf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/pow.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/powf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/rem_pio2.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/rem_pio2_large.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/rem_pio2f.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/remainder.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/remainderf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/remquo.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/remquof.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/rint.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/rintf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/round.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/roundf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/scalbn.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/scalbnf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/sin.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/sincos.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/sincosf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/sinf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/sinh.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/sinhf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/sqrt.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/sqrtf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/tan.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/tanf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/tanh.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/tanhf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/tgamma.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/tgammaf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/trunc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../libm/src/math/truncf.rs", ] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false edition = "2021" - cargo_pkg_version = "0.1.138" + cargo_pkg_version = "0.1.140" cargo_pkg_authors = "Jorge Aparicio <japaricious@gmail.com>" cargo_pkg_name = "compiler_builtins" cargo_pkg_description = "Compiler intrinsics used by the Rust compiler. Also available for other targets if necessary!" @@ -486,9 +491,9 @@ "core", "rustc-dep-of-std", ] - build_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/build.rs" - build_sources = [ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/build.rs" ] - build_script_inputs = [ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.138/src/../configure.rs" ] + build_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/build.rs" + build_sources = [ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/build.rs" ] + build_script_inputs = [ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/compiler_builtins-0.1.140/src/../configure.rs" ] rustenv = [ "CFG_DISABLE_UNSTABLE_FEATURES=0", "STD_ENV_ARCH=$rust_target_arch", @@ -564,6 +569,7 @@ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/hash/sip.rs", "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/hint.rs", "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/internal_macros.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/intrinsics/fallback.rs", "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/intrinsics/mir.rs", "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/intrinsics/mod.rs", "//third_party/rust-toolchain/lib/rustlib/src/rust/library/core/src/intrinsics/simd.rs", @@ -1082,52 +1088,52 @@ } cargo_crate("gimli") { crate_type = "rlib" - crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/lib.rs" + crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/lib.rs" sources = [ - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/arch.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/common.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/constants.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/endianity.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/leb128.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/lib.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/read/abbrev.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/read/addr.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/read/aranges.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/read/cfi.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/read/dwarf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/read/endian_reader.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/read/endian_slice.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/read/index.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/read/line.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/read/lists.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/read/loclists.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/read/lookup.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/read/mod.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/read/op.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/read/pubnames.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/read/pubtypes.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/read/reader.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/read/relocate.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/read/rnglists.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/read/str.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/read/unit.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/read/util.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/read/value.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/test_util.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/write/abbrev.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/write/cfi.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/write/dwarf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/write/endian_vec.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/write/line.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/write/loc.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/write/mod.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/write/op.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/write/range.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/write/relocate.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/write/section.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/write/str.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/write/unit.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.29.0/src/write/writer.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/arch.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/common.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/constants.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/endianity.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/leb128.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/read/abbrev.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/read/addr.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/read/aranges.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/read/cfi.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/read/dwarf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/read/endian_reader.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/read/endian_slice.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/read/index.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/read/line.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/read/lists.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/read/loclists.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/read/lookup.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/read/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/read/op.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/read/pubnames.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/read/pubtypes.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/read/reader.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/read/relocate.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/read/rnglists.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/read/str.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/read/unit.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/read/util.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/read/value.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/test_util.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/write/abbrev.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/write/cfi.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/write/dwarf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/write/endian_vec.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/write/line.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/write/loc.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/write/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/write/op.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/write/range.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/write/relocate.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/write/section.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/write/str.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/write/unit.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/gimli-0.31.1/src/write/writer.rs", ] inputs = [] no_std = true @@ -1135,7 +1141,7 @@ # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false edition = "2018" - cargo_pkg_version = "0.29.0" + cargo_pkg_version = "0.31.1" cargo_pkg_name = "gimli" cargo_pkg_description = "A library for reading and writing the DWARF debugging format." @@ -1584,26 +1590,26 @@ } cargo_crate("miniz_oxide") { crate_type = "rlib" - crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/miniz_oxide-0.7.4/src/lib.rs" + crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/miniz_oxide-0.8.2/src/lib.rs" sources = [ - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/miniz_oxide-0.7.4/src/deflate/buffer.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/miniz_oxide-0.7.4/src/deflate/core.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/miniz_oxide-0.7.4/src/deflate/mod.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/miniz_oxide-0.7.4/src/deflate/stream.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/miniz_oxide-0.7.4/src/inflate/core.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/miniz_oxide-0.7.4/src/inflate/mod.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/miniz_oxide-0.7.4/src/inflate/output_buffer.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/miniz_oxide-0.7.4/src/inflate/stream.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/miniz_oxide-0.7.4/src/lib.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/miniz_oxide-0.7.4/src/shared.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/miniz_oxide-0.8.2/src/deflate/buffer.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/miniz_oxide-0.8.2/src/deflate/core.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/miniz_oxide-0.8.2/src/deflate/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/miniz_oxide-0.8.2/src/deflate/stream.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/miniz_oxide-0.8.2/src/inflate/core.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/miniz_oxide-0.8.2/src/inflate/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/miniz_oxide-0.8.2/src/inflate/output_buffer.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/miniz_oxide-0.8.2/src/inflate/stream.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/miniz_oxide-0.8.2/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/miniz_oxide-0.8.2/src/shared.rs", ] inputs = [] no_std = true # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false - edition = "2018" - cargo_pkg_version = "0.7.4" + edition = "2021" + cargo_pkg_version = "0.8.2" cargo_pkg_authors = "Frommi <daniil.liferenko@gmail.com>, oyvindln <oyvindln@users.noreply.github.com>" cargo_pkg_name = "miniz_oxide" cargo_pkg_description = "DEFLATE compression and decompression library rewritten in Rust based on miniz" @@ -1618,7 +1624,7 @@ ] executable_configs += [ "//build/config/compiler:no_chromium_code" ] deps = [ - ":adler", + ":adler2", ":compiler_builtins", ":rustc_std_workspace_alloc", ":rustc_std_workspace_core", @@ -1649,88 +1655,88 @@ } cargo_crate("object") { crate_type = "rlib" - crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/lib.rs" + crate_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/lib.rs" sources = [ - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/archive.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/build/bytes.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/build/elf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/build/error.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/build/mod.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/build/table.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/common.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/elf.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/endian.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/lib.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/macho.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/pe.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/pod.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/any.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/archive.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/coff/comdat.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/coff/file.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/coff/import.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/coff/mod.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/coff/relocation.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/coff/section.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/coff/symbol.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/elf/attributes.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/elf/comdat.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/elf/compression.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/elf/dynamic.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/elf/file.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/elf/hash.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/elf/mod.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/elf/note.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/elf/relocation.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/elf/section.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/elf/segment.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/elf/symbol.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/elf/version.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/gnu_compression.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/macho/dyld_cache.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/macho/fat.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/macho/file.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/macho/load_command.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/macho/mod.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/macho/relocation.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/macho/section.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/macho/segment.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/macho/symbol.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/mod.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/pe/data_directory.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/pe/export.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/pe/file.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/pe/import.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/pe/mod.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/pe/relocation.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/pe/resource.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/pe/rich.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/pe/section.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/read_cache.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/read_ref.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/traits.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/util.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/wasm.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/xcoff/comdat.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/xcoff/file.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/xcoff/mod.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/xcoff/relocation.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/xcoff/section.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/xcoff/segment.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/read/xcoff/symbol.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/write/coff/mod.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/write/coff/object.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/write/coff/writer.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/write/elf/mod.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/write/elf/object.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/write/elf/writer.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/write/macho.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/write/mod.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/write/pe.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/write/string.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/write/util.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/write/xcoff.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.5/src/xcoff.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/archive.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/build/bytes.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/build/elf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/build/error.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/build/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/build/table.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/common.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/elf.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/endian.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/lib.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/macho.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/pe.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/pod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/any.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/archive.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/coff/comdat.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/coff/file.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/coff/import.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/coff/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/coff/relocation.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/coff/section.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/coff/symbol.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/elf/attributes.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/elf/comdat.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/elf/compression.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/elf/dynamic.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/elf/file.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/elf/hash.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/elf/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/elf/note.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/elf/relocation.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/elf/section.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/elf/segment.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/elf/symbol.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/elf/version.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/gnu_compression.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/macho/dyld_cache.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/macho/fat.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/macho/file.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/macho/load_command.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/macho/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/macho/relocation.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/macho/section.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/macho/segment.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/macho/symbol.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/pe/data_directory.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/pe/export.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/pe/file.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/pe/import.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/pe/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/pe/relocation.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/pe/resource.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/pe/rich.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/pe/section.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/read_cache.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/read_ref.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/traits.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/util.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/wasm.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/xcoff/comdat.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/xcoff/file.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/xcoff/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/xcoff/relocation.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/xcoff/section.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/xcoff/segment.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/read/xcoff/symbol.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/write/coff/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/write/coff/object.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/write/coff/writer.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/write/elf/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/write/elf/object.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/write/elf/writer.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/write/macho.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/write/mod.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/write/pe.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/write/string.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/write/util.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/write/xcoff.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/src/xcoff.rs", ] inputs = [] no_std = true @@ -1738,7 +1744,7 @@ # Unit tests skipped. Generate with --with-tests to include them. build_native_rust_unit_tests = false edition = "2018" - cargo_pkg_version = "0.36.5" + cargo_pkg_version = "0.36.7" cargo_pkg_name = "object" cargo_pkg_description = "A unified interface for reading and writing object file formats." @@ -1778,6 +1784,8 @@ "unaligned", "xcoff", ] + build_root = "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/build.rs" + build_sources = [ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/vendor/object-0.36.7/build.rs" ] rustenv = [ "CFG_DISABLE_UNSTABLE_FEATURES=0", "STD_ENV_ARCH=$rust_target_arch", @@ -2405,8 +2413,6 @@ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/rt.rs", "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/barrier.rs", "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/barrier/tests.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/condvar.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/condvar/tests.rs", "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/lazy_lock.rs", "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/lazy_lock/tests.rs", "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/mod.rs", @@ -2424,17 +2430,19 @@ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/mpsc/mod.rs", "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/mpsc/sync_tests.rs", "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/mpsc/tests.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/mutex.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/mutex/tests.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/once.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/once/tests.rs", "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/once_lock.rs", "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/once_lock/tests.rs", "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/poison.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/poison/condvar.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/poison/condvar/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/poison/mutex.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/poison/mutex/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/poison/once.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/poison/once/tests.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/poison/rwlock.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/poison/rwlock/tests.rs", "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/reentrant_lock.rs", "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/reentrant_lock/tests.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/rwlock.rs", - "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sync/rwlock/tests.rs", "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/alloc/hermit.rs", "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/alloc/mod.rs", "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/sys/alloc/sgx.rs", @@ -2785,6 +2793,7 @@ "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/gimli/libs_libnx.rs", "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/gimli/libs_macos.rs", "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/gimli/libs_windows.rs", + "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/gimli/lru.rs", "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/gimli/macho.rs", "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/gimli/mmap_fake.rs", "//third_party/rust-toolchain/lib/rustlib/src/rust/library/std/src/../../backtrace/src/symbolize/gimli/mmap_unix.rs",
diff --git a/cc/base/features.cc b/cc/base/features.cc index f56d25b..2ef845f5 100644 --- a/cc/base/features.cc +++ b/cc/base/features.cc
@@ -157,6 +157,10 @@ BASE_FEATURE(kTreesInViz, "TreesInViz", base::FEATURE_DISABLED_BY_DEFAULT); +BASE_FEATURE(kTreeAnimationsInViz, + "kTreeAnimationsInViz", + base::FEATURE_DISABLED_BY_DEFAULT); + BASE_FEATURE(kSendExplicitDecodeRequestsImmediately, "SendExplicitDecodeRequestsImmediately", base::FEATURE_DISABLED_BY_DEFAULT);
diff --git a/cc/base/features.h b/cc/base/features.h index 14374070..68fcc90 100644 --- a/cc/base/features.h +++ b/cc/base/features.h
@@ -168,6 +168,9 @@ // Enables Viz service-side layer trees for content rendering. CC_BASE_EXPORT BASE_DECLARE_FEATURE(kTreesInViz); +// Enables Viz service-side layer tree animations for content rendering. +CC_BASE_EXPORT BASE_DECLARE_FEATURE(kTreeAnimationsInViz); + // When enabled HTMLImageElement::decode() will initiate the decode task right // away rather than piggy-backing on the next BeginMainFrame. CC_BASE_EXPORT BASE_DECLARE_FEATURE(kSendExplicitDecodeRequestsImmediately);
diff --git a/cc/mojo_embedder/viz_layer_context.cc b/cc/mojo_embedder/viz_layer_context.cc index f3037e38..87225c4 100644 --- a/cc/mojo_embedder/viz_layer_context.cc +++ b/cc/mojo_embedder/viz_layer_context.cc
@@ -727,7 +727,9 @@ last_committed_property_trees_ = property_trees; - SerializeAnimationUpdates(tree, *update); + if (base::FeatureList::IsEnabled(features::kTreeAnimationsInViz)) { + SerializeAnimationUpdates(tree, *update); + } service_->UpdateDisplayTree(std::move(update)); }
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc index c74e8f5e..62f939a3 100644 --- a/cc/trees/layer_tree_host_impl.cc +++ b/cc/trees/layer_tree_host_impl.cc
@@ -327,12 +327,12 @@ // so updating draw properties and drawing will ensure we are using the right // scales that we want when we're not inside a pinch. active_tree_->set_needs_update_draw_properties(); - SetNeedsRedrawOrUpdateDisplayTree(); + SetNeedsRedraw(); frame_trackers_.StopSequence(FrameSequenceTrackerType::kPinchZoom); } void LayerTreeHostImpl::DidUpdatePinchZoom() { - SetNeedsRedrawOrUpdateDisplayTree(); + SetNeedsRedraw(); client_->RenewTreePriority(); } @@ -369,7 +369,7 @@ // TODO(bokan): Do these really need to be manually called? (Rather than // damage/redraw being set from scroll offset changes). SetFullViewportDamage(); - SetNeedsRedrawOrUpdateDisplayTree(); + SetNeedsRedraw(); } void LayerTreeHostImpl::SetDeferBeginMainFrame( @@ -449,6 +449,8 @@ current_begin_frame_tracker_(FROM_HERE), settings_(settings), use_layer_context_for_display_(settings_.UseLayerContextForDisplay()), + use_layer_context_for_animations_( + settings_.UseLayerContextForAnimations()), is_synchronous_single_threaded_( !task_runner_provider->HasImplThread() && !settings_.single_thread_proxy_scheduler && @@ -1109,7 +1111,7 @@ // If the tree changed, then we want to draw at the end of the current // frame. - SetNeedsRedraw(); + SetNeedsRedraw(/*animation_only*/ true); } } @@ -2152,7 +2154,7 @@ if (!client_->IsInsideDraw() && tile->required_for_draw()) { // The LayerImpl::NotifyTileStateChanged() should damage the layer, so this // redraw will make those tiles be displayed. - SetNeedsRedrawOrUpdateDisplayTree(); + SetNeedsRedraw(); } } @@ -2230,7 +2232,7 @@ // Compositor, not LayerTreeFrameSink, is responsible for setting damage // and triggering redraw for constraint changes. SetFullViewportDamage(); - SetNeedsRedrawOrUpdateDisplayTree(); + SetNeedsRedraw(); } } @@ -3399,7 +3401,7 @@ // Optimistically schedule a draw. This will let us expect the tile manager // to complete its work so that we can draw new tiles within the impl frame // we are beginning now. - SetNeedsRedraw(); + SetNeedsRedraw(/*animation_only*/ true); } if (input_delegate_) @@ -3990,7 +3992,7 @@ // draw anything even if this is not the first time we become visible. if (!active_tree_->LayerListIsEmpty()) { SetFullViewportDamage(); - SetNeedsRedrawOrUpdateDisplayTree(); + SetNeedsRedraw(); } } else if (!settings_.is_display_tree) { EvictAllUIResources(); @@ -4009,14 +4011,17 @@ client_->SetNeedsOneBeginImplFrameOnImplThread(); } -void LayerTreeHostImpl::SetNeedsRedraw() { +void LayerTreeHostImpl::SetNeedsRedraw(bool animation_only) { NotifyLatencyInfoSwapPromiseMonitors(); events_metrics_manager_.SaveActiveEventMetrics(); - client_->SetNeedsRedrawOnImplThread(); -} -void LayerTreeHostImpl::SetNeedsUpdateDisplayTree() { - client_->SetNeedsUpdateDisplayTreeOnImplThread(); + if (use_layer_context_for_display_) { + if (!animation_only || !use_layer_context_for_animations_) { + client_->SetNeedsUpdateDisplayTreeOnImplThread(); + } + } else { + client_->SetNeedsRedrawOnImplThread(); + } } ManagedMemoryPolicy LayerTreeHostImpl::ActualManagedMemoryPolicy() const { @@ -4426,7 +4431,7 @@ active_tree_->UpdateViewportContainerSizes(); if (pending_tree_) pending_tree_->UpdateViewportContainerSizes(); - SetNeedsRedrawOrUpdateDisplayTree(); + SetNeedsRedraw(); SetNeedsOneBeginImplFrame(); SetFullViewportDamage(); } @@ -4970,7 +4975,7 @@ // TODO(danakj): Make this a return value from the Animate() call instead of an // interface on LTHI. (Also, crbug.com/551138.) void LayerTreeHostImpl::SetNeedsRedrawForScrollbarAnimation() { - SetNeedsRedraw(); + SetNeedsRedraw(/*animation_only*/ true); } ScrollbarSet LayerTreeHostImpl::ScrollbarsFor(ElementId id) const { @@ -5814,12 +5819,5 @@ return !settings().single_thread_proxy_scheduler; } -void LayerTreeHostImpl::SetNeedsRedrawOrUpdateDisplayTree() { - if (use_layer_context_for_display_) { - SetNeedsUpdateDisplayTree(); - } else { - SetNeedsRedraw(); - } -} } // namespace cc
diff --git a/cc/trees/layer_tree_host_impl.h b/cc/trees/layer_tree_host_impl.h index e94fd9e..baf46bbf 100644 --- a/cc/trees/layer_tree_host_impl.h +++ b/cc/trees/layer_tree_host_impl.h
@@ -722,8 +722,7 @@ bool visible() const { return visible_; } void SetNeedsOneBeginImplFrame(); - void SetNeedsRedraw(); - void SetNeedsUpdateDisplayTree(); + void SetNeedsRedraw(bool animation_only = false); ManagedMemoryPolicy ActualManagedMemoryPolicy() const; @@ -1087,10 +1086,6 @@ // Returns whether the LayerTreeHostImpl is running on a renderer process. bool RunningOnRendererProcess() const; - // Flags the tree as needing either a redraw or a display tree updating, - // depending on whether or not it has a display tree. - void SetNeedsRedrawOrUpdateDisplayTree(); - // Returns the most up to date display color spaces. gfx::DisplayColorSpaces GetDisplayColorSpaces() const; @@ -1100,6 +1095,7 @@ const LayerTreeSettings settings_; const bool use_layer_context_for_display_; + const bool use_layer_context_for_animations_; // This is set to true only if: // . The compositor is running single-threaded (i.e. there is no separate
diff --git a/cc/trees/layer_tree_settings.cc b/cc/trees/layer_tree_settings.cc index 7ad3377..efd8b407 100644 --- a/cc/trees/layer_tree_settings.cc +++ b/cc/trees/layer_tree_settings.cc
@@ -29,6 +29,11 @@ base::FeatureList::IsEnabled(features::kTreesInViz); } +bool LayerTreeSettings::UseLayerContextForAnimations() const { + return UseLayerContextForDisplay() && + base::FeatureList::IsEnabled(features::kTreeAnimationsInViz); +} + SchedulerSettings LayerTreeSettings::ToSchedulerSettings() const { SchedulerSettings scheduler_settings; scheduler_settings.main_frame_before_activation_enabled =
diff --git a/cc/trees/layer_tree_settings.h b/cc/trees/layer_tree_settings.h index fcce1a5..b879e27 100644 --- a/cc/trees/layer_tree_settings.h +++ b/cc/trees/layer_tree_settings.h
@@ -35,6 +35,10 @@ // using tile resources prepared by this tree. bool UseLayerContextForDisplay() const; + // If true, the remote display tree handles its own composited animations. + // This can only be true when UseLayerContextForDisplay() is also true. + bool UseLayerContextForAnimations() const; + // If true, this is a GPU-side display tree receiving updates from a remote // client via the LayerContext API. Such trees do no raster work of their own // and submit compositor frames directly within Viz using tiles rastered by
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_as.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_as.xtb index b8c335e..b08c0ff 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_as.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_as.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">নতুন টেবৰ গোট</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> টা টেব সলনি কৰা হ'ল, <ph name="ANY_CLOSED" /> টা টেব বন্ধ কৰা হ'ল}one{<ph name="MANY_CHANGED" /> টা টেব সলনি কৰা হ'ল, <ph name="ANY_CLOSED" /> টা টেব বন্ধ কৰা হ'ল}other{<ph name="MANY_CHANGED" /> টা টেব সলনি কৰা হ'ল, <ph name="ANY_CLOSED" /> টা টেব বন্ধ কৰা হ'ল}}</translation> <translation id="4371591986692297148">নিষ্ক্ৰিয় হৈ আছে</translation> +<translation id="4431937619879060901">আপুনি লগে লগে "<ph name="GROUP_NAME" />" টেবৰ গোটটোৰ এক্সেছ হেৰুৱাব আৰু এইটো আপোনাৰ আটাইবোৰ ডিভাইচৰ পৰা মচা হ’ব</translation> <translation id="4460014764210899310">গোট ভংগ কৰক</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{১ টা নিষ্ক্ৰিয় টেব বন্ধ কৰিবনে?}one{<ph name="TAB_COUNT_MANY" /> টা নিষ্ক্ৰিয় টেব বন্ধ কৰিবনে?}other{<ph name="TAB_COUNT_MANY" /> টা নিষ্ক্ৰিয় টেব বন্ধ কৰিবনে?}}</translation> <translation id="4686942373615810936">এইমাত্ৰ সৃষ্টি কৰা হৈছে</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">ষ্ট’ৰৰ তথ্য চাওক, বিকল্পটো স্ক্ৰীনখনৰ প্ৰায় শীৰ্ষত আছে</translation> <translation id="5627941783489838464">টেব সম্পৰ্কীয় কোনো আপডে’ট নাই</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{টেব পুনঃস্থাপন কৰক}one{টেব পুনঃস্থাপন কৰক}other{টেব পুনঃস্থাপন কৰক}}</translation> +<translation id="5647702255748985085">গোটটোৰ পৰা বাহিৰ হ’ব নেকি?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{Chromeৰ পৰা <ph name="TABS_COUNT_ONE" /> টা লিংক}one{Chromeৰ পৰা <ph name="TABS_COUNT_MANY" /> টা লিংক}other{Chromeৰ পৰা <ph name="TABS_COUNT_MANY" /> টা লিংক}}</translation> <translation id="58326064309361797">এক গোট কৰিবলৈ টেববোৰ টানি আনি এৰক</translation> <translation id="5901630391730855834">হালধীয়া</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" /> বাছনি কৰা হৈছে</translation> <translation id="7326879924029668159">উভতাই দিয়াৰ নীতি আৰু অন্য বহুতো চাওক</translation> <translation id="7352298686197644113">আপোনাৰ খোলা থকা টেবসমূহত কোনটো বস্তুৰ মূল্য কম সেয়া চাওক</translation> +<translation id="742664698522525515">গোটটো ৰাখিবনে?</translation> <translation id="7452985128687107478">টেবৰ গোটসমূহ আপোনাৰ সমগ্ৰ ডিভাইচত স্বয়ংক্ৰিয়ভাৱে ছেভ আৰু আপডে’ট হয়</translation> <translation id="747459581954555080">সকলো পুনঃস্থাপন কৰক</translation> <translation id="750886945254958667">পাছত টেবসমূহ যোগ দিবলৈ এই গোটটো ৰাখক বা যদি আপুনি এইটো আৰু এক্সেছ কৰিব নিবিচাৰে তেন্তে ইয়াৰ পৰা বাহিৰ হওক</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">আটাইবোৰ বন্ধ কৰক</translation> <translation id="9090098097337832354">এই দোকানৰ বিষয়ে তথ্য দেখুওৱা বন্ধ হৈছে</translation> <translation id="9114502155681725011">টেবৰ গোট <ph name="TITLE_OF_GROUP" />, ৰং <ph name="COLOR_NAME" />ৰ বাবে টেবৰ গোটৰ কামৰ মেনুখন খোলক।</translation> +<translation id="9169141410816678175">সকলোৱে লগে লগে "<ph name="GROUP_NAME" />" টেবৰ গোটৰ এক্সেছ হেৰুৱাব আৰু আটাইবোৰ ডিভাইচৰ পৰা এইটো মচা হ’ব</translation> <translation id="9169594135889675189">গোটত নতুন টেব যোগ কৰক</translation> <translation id="9216898458513705996">টেবসমূহ এই ডিভাইচত খোলা থাকিব কিন্তু গোটটো <ph name="USER_EMAIL" />ত ছাইন ইন কৰা আটাইবোৰ ডিভাইচৰ পৰা মচি পেলোৱা হ’ব</translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{টেবৰ গোটটো <ph name="TABS_COUNT_ONE" /> টা টেব, <ph name="COLOR_NAME" /> ৰঙৰ সৈতে বিস্তাৰ কৰক।}one{টেবৰ গোটটো <ph name="TABS_COUNT_MANY" /> টা টেব, <ph name="COLOR_NAME" /> ৰঙৰ সৈতে বিস্তাৰ কৰক।}other{টেবৰ গোটটো <ph name="TABS_COUNT_MANY" /> টা টেব, <ph name="COLOR_NAME" /> ৰঙৰ সৈতে বিস্তাৰ কৰক।}}</translation> +<translation id="94870150074703282">গোট মচিবনে?</translation> <translation id="992256792861109788">গুলপীয়া</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_az.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_az.xtb index b827b8c..c1db7e97 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_az.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_az.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Yeni tab qrupu</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> tab dəyişib, <ph name="ANY_CLOSED" /> tab bağlanıb}other{<ph name="MANY_CHANGED" /> tab dəyişib, <ph name="ANY_CLOSED" /> tab bağlanıb}}</translation> <translation id="4371591986692297148">Fəaliyyətsiz</translation> +<translation id="4431937619879060901">"<ph name="GROUP_NAME" />" tab qrupuna girişi dərhal itirəcəksiniz və o, bütün cihazlarınızdan silinəcək</translation> <translation id="4460014764210899310">Qruplaşdırma olmasın</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{1 deaktiv tab bağlansın?}other{<ph name="TAB_COUNT_MANY" /> deaktiv tab bağlansın?}}</translation> <translation id="4686942373615810936">İndicə yaradıldı</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Mağaza məlumatlarına baxın, seçim ekranın yuxarı hissəsində əlçatandır</translation> <translation id="5627941783489838464">Tab yeniləməsi yoxdur</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Tabı bərpa edin}other{Tabları bərpa edin}}</translation> +<translation id="5647702255748985085">Qrupdan çıxırsınız?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{Chrome'dan <ph name="TABS_COUNT_ONE" /> keçid}other{Chrome'dan <ph name="TABS_COUNT_MANY" /> keçid}}</translation> <translation id="58326064309361797">Tabları qruplaşdırmaq üçün sürüşdürün</translation> <translation id="5901630391730855834">Sarı</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" /> Seçilib</translation> <translation id="7326879924029668159">Qaytarma siyasətinə və digər məlumatlara baxın</translation> <translation id="7352298686197644113">Açıq tablarda hansı əşyanın qiymətinin daha aşağı olduğuna baxın</translation> +<translation id="742664698522525515">Qrup saxlanılsın?</translation> <translation id="7452985128687107478">Tab qrupları bütün cihazlarınızda avtomatik olaraq yaddaşda saxlanılır və güncəllənir</translation> <translation id="747459581954555080">Hamısını bərpa edin</translation> <translation id="750886945254958667">Sonra tab əlavə etmək üçün bu qrupu saxlayın və ya artıq ona daxil olmaq istəmirsinizsə, çıxın</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Hamısını bağlayın</translation> <translation id="9090098097337832354">Bu mağaza haqqında məlumatlar bağlanıb</translation> <translation id="9114502155681725011"><ph name="TITLE_OF_GROUP" /> tab qrupu (rəng <ph name="COLOR_NAME" />) üçün tab qrupunun əməliyyat menyusunu açın.</translation> +<translation id="9169141410816678175">Hər kəs "<ph name="GROUP_NAME" />" tab qrupuna girişi dərhal itirəcək və o, bütün cihazlardan silinəcək</translation> <translation id="9169594135889675189">Qrupa yeni tab əlavə edin</translation> <translation id="9216898458513705996">Tablar bu cihazda açıq qalacaq, lakin qrup <ph name="USER_EMAIL" /> hesabına giriş edilmiş bütün cihazlardan silinəcək</translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{<ph name="TABS_COUNT_ONE" /> tabdan ibarət tab qrupunu genişləndirin, rəng <ph name="COLOR_NAME" />.}other{<ph name="TABS_COUNT_MANY" /> tabdan ibarət tab qrupunu genişləndirin, rəng <ph name="COLOR_NAME" />.}}</translation> +<translation id="94870150074703282">Qrup silinsin?</translation> <translation id="992256792861109788">Çəhrayı</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_bg.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_bg.xtb index ffd8ea6..fd62c89 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_bg.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_bg.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Нова група раздели</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{Променихте <ph name="ONE_CHANGED" /> раздел и затворихте <ph name="ANY_CLOSED" />}other{Променихте <ph name="MANY_CHANGED" /> раздела и затворихте <ph name="ANY_CLOSED" />}}</translation> <translation id="4371591986692297148">Неактивно</translation> +<translation id="4431937619879060901">Незабавно ще загубите достъп до групата раздели „<ph name="GROUP_NAME" />“ и тя ще бъде изтрита от всичките ви устройства</translation> <translation id="4460014764210899310">Разгрупиране</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{Искате ли да затворите 1 неактивен раздел?}other{Искате ли да затворите <ph name="TAB_COUNT_MANY" /> неактивни раздела?}}</translation> <translation id="4686942373615810936">Създадено току-що</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Преглед на информацията за магазина – опцията е близо до горната част на екрана</translation> <translation id="5627941783489838464">Няма актуализации на разделите</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Възстановяване на раздела}other{Възстановяване на разделите}}</translation> +<translation id="5647702255748985085">Искате ли да напуснете групата?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> връзка от Chrome}other{<ph name="TABS_COUNT_MANY" /> връзки от Chrome}}</translation> <translation id="58326064309361797">Преместете с плъзгане разделите, за да ги групирате</translation> <translation id="5901630391730855834">Жълто</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002">Избрахте: <ph name="COLOR_NAME" /></translation> <translation id="7326879924029668159">Вижте правилата за връщане и др.</translation> <translation id="7352298686197644113">Вижте кой артикул в отворените раздели е с по-ниска цена</translation> +<translation id="742664698522525515">Да се запази ли групата?</translation> <translation id="7452985128687107478">Групите раздели се запазват и актуализират автоматично на всичките ви устройства</translation> <translation id="747459581954555080">Възстановяване на всички</translation> <translation id="750886945254958667">Запазете тази група, за да добавяте раздели по-късно, или я напуснете, ако вече не искате достъп до нея</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Затваряне на всички</translation> <translation id="9090098097337832354">Информацията за този магазин е затворена</translation> <translation id="9114502155681725011">Отваряне на менюто с действия за групата раздели „<ph name="TITLE_OF_GROUP" />“ с(ъс) <ph name="COLOR_NAME" /> цвят</translation> +<translation id="9169141410816678175">Всички хора незабавно ще загубят достъп до групата раздели „<ph name="GROUP_NAME" />“ и тя ще бъде изтрита от всички устройства</translation> <translation id="9169594135889675189">Добавяне на нов раздел към групата</translation> <translation id="9216898458513705996">Разделите ще останат отворени на това устройство, но групата ще бъде изтрита от всички устройства, на които сте влезли в профила <ph name="USER_EMAIL" /></translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{Разгъване на групата раздели с(ъс) <ph name="COLOR_NAME" /> цвят, в която има <ph name="TABS_COUNT_ONE" /> раздел.}other{Разгъване на групата раздели с(ъс) <ph name="COLOR_NAME" /> цвят, в която има <ph name="TABS_COUNT_MANY" /> раздела.}}</translation> +<translation id="94870150074703282">Да се изтрие ли групата?</translation> <translation id="992256792861109788">розово</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_bn.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_bn.xtb index 1ad816d..060a5fc2 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_bn.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_bn.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">নতুন ট্যাব গ্রুপ</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" />টি ট্যাব পরিবর্তন করা হয়েছে, <ph name="ANY_CLOSED" />টি বন্ধ করা হয়েছে}one{<ph name="MANY_CHANGED" />টি ট্যাব পরিবর্তন করা হয়েছে, <ph name="ANY_CLOSED" />টি বন্ধ করা হয়েছে}other{<ph name="MANY_CHANGED" />টি ট্যাব পরিবর্তন করা হয়েছে, <ph name="ANY_CLOSED" />টি বন্ধ করা হয়েছে}}</translation> <translation id="4371591986692297148">চালু নেই</translation> +<translation id="4431937619879060901">আপনি অবিলম্বে “<ph name="GROUP_NAME" />” ট্যাব গ্রুপের অ্যাক্সেস হারাবেন এবং আপনার সব ডিভাইস থেকে এটি মুছে দেওয়া হবে</translation> <translation id="4460014764210899310">আলাদা করুন</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{১টি ইনঅ্যাক্টিভ ট্যাব বন্ধ করবেন?}one{<ph name="TAB_COUNT_MANY" />টি ইনঅ্যাক্টিভ ট্যাব বন্ধ করবেন?}other{<ph name="TAB_COUNT_MANY" />টি ইনঅ্যাক্টিভ ট্যাব বন্ধ করবেন?}}</translation> <translation id="4686942373615810936">এইমাত্র তৈরি করা হয়েছে</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">স্টোর সংক্রান্ত তথ্য দেখুন, স্ক্রিনের সবচেয়ে উপরের অংশে এই বিকল্প উপলভ্য আছে</translation> <translation id="5627941783489838464">কোনও ট্যাব সম্পর্কিত আপডেট নেই</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{ট্যাব ফিরিয়ে আনুন}one{ট্যাব ফিরিয়ে আনুন}other{ট্যাব ফিরিয়ে আনুন}}</translation> +<translation id="5647702255748985085">গ্রুপ থেকে বেরিয়ে আসতে চান?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{Chrome থেকে <ph name="TABS_COUNT_ONE" />টি লিঙ্ক}one{Chrome থেকে <ph name="TABS_COUNT_MANY" />টি লিঙ্ক}other{Chrome থেকে <ph name="TABS_COUNT_MANY" />টি লিঙ্ক}}</translation> <translation id="58326064309361797">ট্যাবগুলি গ্রুপ করতে ড্র্যাগ করুন</translation> <translation id="5901630391730855834">হলুদ</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" /> বেছে নেওয়া হয়েছে</translation> <translation id="7326879924029668159">ফেরত দেওয়ার নীতি এবং আরও অনেক কিছু দেখুন</translation> <translation id="7352298686197644113">কোন আইটেমের দাম কম তা খোলা থাকা ট্যাবগুলিতে দেখুন</translation> +<translation id="742664698522525515">গ্রুপটি রাখবেন?</translation> <translation id="7452985128687107478">আপনার সবকটি ডিভাইস জুড়ে ট্যাব গ্রুপ অটোমেটিক সেভ এবং আপডেট হয়</translation> <translation id="747459581954555080">সকল পুনরুদ্ধার করুন</translation> <translation id="750886945254958667">পরে ট্যাব যোগ করার জন্য এই গ্রুপটি রেখে দিন অথবা আর অ্যাক্সেস করতে না চাইলে ছেড়ে বেরিয়ে আসুন</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">সবকটি বন্ধ করুন</translation> <translation id="9090098097337832354">বন্ধ হওয়া এই স্টোরের বিষয়ে তথ্য</translation> <translation id="9114502155681725011"><ph name="COLOR_NAME" /> রঙের ট্যাব গ্রুপ <ph name="TITLE_OF_GROUP" />-এর জন্য ট্যাব গ্রুপের অ্যাকশন মেনু খুলুন।</translation> +<translation id="9169141410816678175">প্রত্যেকে অবিলম্বে "<ph name="GROUP_NAME" />" ট্যাব গ্রুপে অ্যাক্সেস হারাবেন এবং সব ডিভাইস থেকে এটি মুছে দেওয়া হবে</translation> <translation id="9169594135889675189">গ্রুপে নতুন ট্যাব যোগ করুন</translation> <translation id="9216898458513705996">এই ডিভাইসে ট্যাব খোলা থাকবে কিন্তু <ph name="USER_EMAIL" /> ব্যবহার করে সাইন-ইন করা হয়েছে এমন সবকটি ডিভাইস থেকে গ্রুপ মুছে ফেলা হবে</translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{<ph name="TABS_COUNT_ONE" />টি ট্যাব, <ph name="COLOR_NAME" /> কালার সহ, ট্যাব গ্রুপ বড় করুন।}one{<ph name="TABS_COUNT_MANY" />টি ট্যাব, <ph name="COLOR_NAME" /> কালার সহ, ট্যাব গ্রুপ বড় করুন।}other{<ph name="TABS_COUNT_MANY" />টি ট্যাব, <ph name="COLOR_NAME" /> কালার সহ, ট্যাব গ্রুপ বড় করুন।}}</translation> +<translation id="94870150074703282">গ্রুপটি মুছবেন?</translation> <translation id="992256792861109788">গোলাপী</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_bs.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_bs.xtb index bfcfa095..19e6091 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_bs.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_bs.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Nova grupa kartica</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{Promijenjena je <ph name="ONE_CHANGED" /> kartica. Zatvoreno: <ph name="ANY_CLOSED" />}one{Promijenjena je <ph name="MANY_CHANGED" /> kartica. Zatvoreno: <ph name="ANY_CLOSED" />}few{Promijenjene su <ph name="MANY_CHANGED" /> kartice. Zatvoreno: <ph name="ANY_CLOSED" />}other{Promijenjeno je <ph name="MANY_CHANGED" /> kartica. Zatvoreno: <ph name="ANY_CLOSED" />}}</translation> <translation id="4371591986692297148">Neaktivno</translation> +<translation id="4431937619879060901">Odmah ćete izgubiti pristup grupi kartica "<ph name="GROUP_NAME" />", a ona će se izbrisati sa svih vaših uređaja</translation> <translation id="4460014764210899310">Razgrupiši</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{Zatvoriti 1 neaktivnu karticu?}one{Zatvoriti <ph name="TAB_COUNT_MANY" /> neaktivnu karticu?}few{Zatvoriti <ph name="TAB_COUNT_MANY" /> neaktivne kartice?}other{Zatvoriti <ph name="TAB_COUNT_MANY" /> neaktivnih kartica?}}</translation> <translation id="4686942373615810936">Kreirano je upravo sada</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Prikaz informacija o trgovini. Opcija je dostupna pri vrhu ekrana</translation> <translation id="5627941783489838464">Nema ažuriranja kartica</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Vrati karticu}one{Vrati kartice}few{Vrati kartice}other{Vrati kartice}}</translation> +<translation id="5647702255748985085">Napustiti grupu?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> link iz Chromea}one{<ph name="TABS_COUNT_MANY" /> link iz Chromea}few{<ph name="TABS_COUNT_MANY" /> linka iz Chromea}other{<ph name="TABS_COUNT_MANY" /> linkova iz Chromea}}</translation> <translation id="58326064309361797">Prevucite kartice da ih grupišete</translation> <translation id="5901630391730855834">Žuta</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002">Odabrano: <ph name="COLOR_NAME" /></translation> <translation id="7326879924029668159">Pogledajte pravila povrata i drugo</translation> <translation id="7352298686197644113">Pogledajte koja stavka u otvorenim karticama ima nižu cijenu</translation> +<translation id="742664698522525515">Zadržati grupu?</translation> <translation id="7452985128687107478">Grupe kartica se automatski pohranjuju i ažuriraju na svim uređajima</translation> <translation id="747459581954555080">Vrati sve</translation> <translation id="750886945254958667">Zadržite ovu grupu da kasnije dodate kartice ili je napustite ako joj više ne želite pristupati</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Zatvori sve</translation> <translation id="9090098097337832354">Informacije o ovoj trgovini su zatvorene</translation> <translation id="9114502155681725011">Otvaranje menija s radnjama grupe kartica za grupu kartica <ph name="TITLE_OF_GROUP" />, boje <ph name="COLOR_NAME" />.</translation> +<translation id="9169141410816678175">Svako će odmah izgubiti pristup grupi kartica "<ph name="GROUP_NAME" />", a ona će se izbrisati sa svih uređaja</translation> <translation id="9169594135889675189">Dodaj novu karticu u grupu</translation> <translation id="9216898458513705996">Kartice će ostati otvorene na uređaju, ali će se grupa izbrisati sa svih uređaja na kojima ste prijavljeni na <ph name="USER_EMAIL" /></translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{Proširivanje grupe kartica s <ph name="TABS_COUNT_ONE" /> karticom, boja <ph name="COLOR_NAME" />.}one{Proširivanje grupe kartica s <ph name="TABS_COUNT_MANY" /> karticom, boja <ph name="COLOR_NAME" />.}few{Proširivanje grupe kartica s <ph name="TABS_COUNT_MANY" /> kartice, boja <ph name="COLOR_NAME" />.}other{Proširivanje grupe kartica s <ph name="TABS_COUNT_MANY" /> kartica, boja <ph name="COLOR_NAME" />.}}</translation> +<translation id="94870150074703282">Izbrisati grupu?</translation> <translation id="992256792861109788">Ružičasta</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_cy.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_cy.xtb index 3e4e323a..db62758 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_cy.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_cy.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Grŵp tabiau newydd</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> tab wedi newid, <ph name="ANY_CLOSED" /> wedi cau}zero{<ph name="MANY_CHANGED" /> tabiau wedi newid, <ph name="ANY_CLOSED" /> wedi cau}two{<ph name="MANY_CHANGED" /> dab wedi newid, <ph name="ANY_CLOSED" /> wedi cau}few{<ph name="MANY_CHANGED" /> thab wedi newid, <ph name="ANY_CLOSED" /> wedi cau}many{<ph name="MANY_CHANGED" /> thab wedi newid, <ph name="ANY_CLOSED" /> wedi cau}other{<ph name="MANY_CHANGED" /> tab wedi newid, <ph name="ANY_CLOSED" /> wedi cau}}</translation> <translation id="4371591986692297148">Anweithredol</translation> +<translation id="4431937619879060901">Byddwch yn colli mynediad at y grŵp tabiau "<ph name="GROUP_NAME" />" ar unwaith, a bydd yn cael ei ddileu o'ch holl ddyfeisiau</translation> <translation id="4460014764210899310">Dadgrwpio</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{Cau 1 tab anweithredol?}zero{Cau <ph name="TAB_COUNT_MANY" /> tab anweithredol?}two{Cau <ph name="TAB_COUNT_MANY" /> dab anweithredol?}few{Cau <ph name="TAB_COUNT_MANY" /> thab anweithredol?}many{Cau <ph name="TAB_COUNT_MANY" /> thab anweithredol?}other{Cau <ph name="TAB_COUNT_MANY" /> tab anweithredol?}}</translation> <translation id="4686942373615810936">Newydd ei greu</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Gweld gwybodaeth siop, opsiwn ar gael yn agos at frig y sgrîn</translation> <translation id="5627941783489838464">Dim diweddariadau tab</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Adfer y tab}zero{Adfer y tabiau}two{Adfer y tabiau}few{Adfer y tabiau}many{Adfer y tabiau}other{Adfer y tabiau}}</translation> +<translation id="5647702255748985085">Gadael y grŵp?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> dolen o Chrome}zero{<ph name="TABS_COUNT_MANY" /> dolen o Chrome}two{<ph name="TABS_COUNT_MANY" /> ddolen o Chrome}few{<ph name="TABS_COUNT_MANY" /> dolen o Chrome}many{<ph name="TABS_COUNT_MANY" /> dolen o Chrome}other{<ph name="TABS_COUNT_MANY" /> dolen o Chrome}}</translation> <translation id="58326064309361797">Llusgwch dabiau i'w grwpio</translation> <translation id="5901630391730855834">Melyn</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" /> Wedi'i ddewis</translation> <translation id="7326879924029668159">Gweld y polisi dychwelyd a rhagor</translation> <translation id="7352298686197644113">Gweld pa eitem yn eich tabiau sydd ar agor sydd â phris is</translation> +<translation id="742664698522525515">Cadw'r grŵp?</translation> <translation id="7452985128687107478">Mae grwpiau tabiau yn cael eu cadw a'u diweddaru'n awtomatig ar draws eich holl ddyfeisiau</translation> <translation id="747459581954555080">Adfer popeth</translation> <translation id="750886945254958667">Cadwch y grŵp hwn i ychwanegu tabiau yn ddiweddarach, neu gadewch ef os nad ydych am gael mynediad ato mwyach</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Cau'r cyfan</translation> <translation id="9090098097337832354">Gwybodaeth am y siop hon wedi'i chau</translation> <translation id="9114502155681725011">Agorwch ddewislen gweithredu grŵp tab ar gyfer grŵp tab <ph name="TITLE_OF_GROUP" />, lliw <ph name="COLOR_NAME" />.</translation> +<translation id="9169141410816678175">Bydd pawb yn colli mynediad at y grŵp tabiau "<ph name="GROUP_NAME" />" ar unwaith, a bydd yn cael ei ddileu o bob dyfais</translation> <translation id="9169594135889675189">Ychwanegu tab newydd at y grŵp</translation> <translation id="9216898458513705996">Bydd y tabiau'n aros ar agor ar y ddyfais hon ond bydd y grŵp yn cael ei ddileu o bob dyfais sydd wedi'i mewngofnodi i <ph name="USER_EMAIL" /></translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{Ehangu grŵp tabiau gydag <ph name="TABS_COUNT_ONE" /> tab, lliw <ph name="COLOR_NAME" />.}zero{Ehangu grŵp tabiau gyda <ph name="TABS_COUNT_MANY" /> tab, lliw <ph name="COLOR_NAME" />.}two{Ehangu grŵp tabiau gyda <ph name="TABS_COUNT_MANY" /> dab, lliw <ph name="COLOR_NAME" />.}few{Ehangu grŵp tabiau gyda <ph name="TABS_COUNT_MANY" /> thab, lliw <ph name="COLOR_NAME" />.}many{Ehangu grŵp tabiau gyda <ph name="TABS_COUNT_MANY" /> thab, lliw <ph name="COLOR_NAME" />.}other{Ehangu grŵp tabiau gyda <ph name="TABS_COUNT_MANY" /> tab, lliw <ph name="COLOR_NAME" />.}}</translation> +<translation id="94870150074703282">Dileu'r grŵp?</translation> <translation id="992256792861109788">Pinc</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_da.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_da.xtb index 39e50e4b..3e337823 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_da.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_da.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Ny fanegruppe</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> fane blev ændret, og <ph name="ANY_CLOSED" /> blev lukket}one{<ph name="MANY_CHANGED" /> fane blev ændret, og <ph name="ANY_CLOSED" /> blev lukket}other{<ph name="MANY_CHANGED" /> faner blev ændret, og <ph name="ANY_CLOSED" /> blev lukket}}</translation> <translation id="4371591986692297148">Inaktiv</translation> +<translation id="4431937619879060901">Du mister øjeblikkeligt adgangen til fanegruppen "<ph name="GROUP_NAME" />", og den slettes fra alle dine enheder</translation> <translation id="4460014764210899310">Ophæv gruppering</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{Vil du lukke 1 inaktiv fane?}one{Vil du lukke <ph name="TAB_COUNT_MANY" /> inaktiv fane?}other{Vil du lukke <ph name="TAB_COUNT_MANY" /> inaktive faner?}}</translation> <translation id="4686942373615810936">Oprettet lige nu</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Se butiksoplysninger. Valgmuligheden findes øverst på skærmen</translation> <translation id="5627941783489838464">Ingen faneopdateringer</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Gendan fane}one{Gendan fane}other{Gendan faner}}</translation> +<translation id="5647702255748985085">Vil du forlade gruppen?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> link fra Chrome}one{<ph name="TABS_COUNT_MANY" /> link fra Chrome}other{<ph name="TABS_COUNT_MANY" /> links fra Chrome}}</translation> <translation id="58326064309361797">Træk og slip faner for at gruppere dem</translation> <translation id="5901630391730855834">Gul</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" /> er valgt</translation> <translation id="7326879924029668159">Se returpolitikken m.m.</translation> <translation id="7352298686197644113">Se, hvilket produkt på dine åbne faner der har en lavere pris</translation> +<translation id="742664698522525515">Vil du beholde gruppen?</translation> <translation id="7452985128687107478">Fanegrupper gemmes og opdateres automatisk på alle dine enheder</translation> <translation id="747459581954555080">Gendan alle</translation> <translation id="750886945254958667">Behold denne gruppe for at tilføje faner senere, eller forlad den, hvis du ikke længere vil have adgang til den</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Luk alle</translation> <translation id="9090098097337832354">Oplysningerne om denne butik er lukket</translation> <translation id="9114502155681725011">Åbn handlingsmenuen for fanegrupper for fanegruppen <ph name="TITLE_OF_GROUP" /> i farven <ph name="COLOR_NAME" />.</translation> +<translation id="9169141410816678175">Alle mister øjeblikkeligt adgangen til fanegruppen "<ph name="GROUP_NAME" />", og den slettes fra alle enheder</translation> <translation id="9169594135889675189">Føj en ny fane til gruppen</translation> <translation id="9216898458513705996">Fanerne forbliver åbne på denne enhed, men gruppen slettes fra alle enheder, hvor du er logget ind på <ph name="USER_EMAIL" /></translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{Udvid fanegruppen i farven <ph name="COLOR_NAME" /> med <ph name="TABS_COUNT_ONE" /> fane.}one{Udvid fanegruppen i farven <ph name="COLOR_NAME" /> med <ph name="TABS_COUNT_MANY" /> fane.}other{Udvid fanegruppen i farven <ph name="COLOR_NAME" /> med <ph name="TABS_COUNT_MANY" /> faner.}}</translation> +<translation id="94870150074703282">Vil du slette gruppen?</translation> <translation id="992256792861109788">Lyserød</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_el.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_el.xtb index c09ad1b..261a672 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_el.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_el.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Νέα ομάδα καρτελών</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{Άλλαξε <ph name="ONE_CHANGED" /> καρτέλα, έκλεισαν <ph name="ANY_CLOSED" />}other{Άλλαξαν <ph name="MANY_CHANGED" /> καρτέλες, έκλεισαν <ph name="ANY_CLOSED" />}}</translation> <translation id="4371591986692297148">Ανενεργή</translation> +<translation id="4431937619879060901">Θα χάσετε αμέσως την πρόσβαση στην ομάδα καρτελών "<ph name="GROUP_NAME" />" και θα διαγραφεί από όλες τις συσκευές σας</translation> <translation id="4460014764210899310">Κατάργηση ομαδοποίησης</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{Κλείσιμο 1 ανενεργής καρτέλας;}other{Κλείσιμο <ph name="TAB_COUNT_MANY" /> ανενεργών καρτελών;}}</translation> <translation id="4686942373615810936">Δημιουργήθηκε μόλις τώρα</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Δείτε πληροφορίες καταστήματος, η επιλογή είναι διαθέσιμη στο επάνω μέρος της οθόνης</translation> <translation id="5627941783489838464">Δεν υπάρχουν ενημερώσεις καρτελών</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Επαναφορά καρτέλας}other{Επαναφορά καρτελών}}</translation> +<translation id="5647702255748985085">Αποχώρηση από την ομάδα;</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> σύνδεσμος από το Chrome}other{<ph name="TABS_COUNT_MANY" /> σύνδεσμοι από το Chrome}}</translation> <translation id="58326064309361797">Σύρετε καρτέλες για να τις ομαδοποιήσετε.</translation> <translation id="5901630391730855834">Κίτρινο</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002">Επιλέχθηκε το <ph name="COLOR_NAME" /></translation> <translation id="7326879924029668159">Δείτε την πολιτική επιστροφής και άλλα.</translation> <translation id="7352298686197644113">Δείτε ποιο στοιχείο στις ανοικτές καρτέλες σας έχει τη χαμηλότερη τιμή.</translation> +<translation id="742664698522525515">Διατήρηση ομάδας;</translation> <translation id="7452985128687107478">Οι ομάδες καρτελών αποθηκεύονται και ενημερώνονται αυτόματα σε όλες τις συσκευές σας</translation> <translation id="747459581954555080">Επαναφορά όλων</translation> <translation id="750886945254958667">Διατηρήστε αυτή την ομάδα, για να προσθέσετε καρτέλες αργότερα, ή αποχωρήστε, αν δεν θέλετε πλέον να έχετε πρόσβαση σε αυτή</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Κλείσιμο όλων</translation> <translation id="9090098097337832354">Κλείσιμο πληροφοριών σχετικά με αυτό το κατάστημα</translation> <translation id="9114502155681725011">Άνοιγμα του μενού ενεργειών ομάδας καρτελών για την ομάδα καρτελών <ph name="TITLE_OF_GROUP" />, με χρώμα <ph name="COLOR_NAME" />.</translation> +<translation id="9169141410816678175">Όλοι θα χάσουν αμέσως την πρόσβαση στην ομάδα καρτελών "<ph name="GROUP_NAME" />" και θα διαγραφεί από όλες τις συσκευές</translation> <translation id="9169594135889675189">Προσθήκη νέας καρτέλας στην ομάδα</translation> <translation id="9216898458513705996">Οι καρτέλες θα παραμείνουν ανοιχτές σε αυτή τη συσκευή, αλλά η ομάδα θα διαγραφεί από όλες τις συσκευές που είναι συνδεδεμένες στον λογαριασμό <ph name="USER_EMAIL" /></translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{Ανάπτυξη ομάδας καρτελών με <ph name="TABS_COUNT_ONE" /> καρτέλα, χρώμα <ph name="COLOR_NAME" />.}other{Ανάπτυξη ομάδας καρτελών με <ph name="TABS_COUNT_MANY" /> καρτέλες, χρώμα <ph name="COLOR_NAME" />.}}</translation> +<translation id="94870150074703282">Διαγραφή ομάδας;</translation> <translation id="992256792861109788">Ροζ</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_en-GB.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_en-GB.xtb index 04e70e8c..3a3d0739 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_en-GB.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_en-GB.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">New tab group</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> tab changed, <ph name="ANY_CLOSED" /> closed}other{<ph name="MANY_CHANGED" /> tabs changed, <ph name="ANY_CLOSED" /> closed}}</translation> <translation id="4371591986692297148">Inactive</translation> +<translation id="4431937619879060901">You'll immediately lose access to the '<ph name="GROUP_NAME" />' tab group, and it will be deleted from all your devices</translation> <translation id="4460014764210899310">Ungroup</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{Close 1 inactive tab?}other{Close <ph name="TAB_COUNT_MANY" /> inactive tabs?}}</translation> <translation id="4686942373615810936">Created just now</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">View shop info, option available near top of the screen</translation> <translation id="5627941783489838464">No tab updates</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Restore tab}other{Restore tabs}}</translation> +<translation id="5647702255748985085">Leave group?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> link from Chrome}other{<ph name="TABS_COUNT_MANY" /> links from Chrome}}</translation> <translation id="58326064309361797">Drag tabs to group them</translation> <translation id="5901630391730855834">Yellow</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" /> selected</translation> <translation id="7326879924029668159">See return policy and more</translation> <translation id="7352298686197644113">See which item in your open tabs has a lower price</translation> +<translation id="742664698522525515">Keep group?</translation> <translation id="7452985128687107478">Tab groups automatically save and update across all your devices</translation> <translation id="747459581954555080">Restore all</translation> <translation id="750886945254958667">Keep this group to add tabs later, or leave it if you no longer want access to it</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Close all</translation> <translation id="9090098097337832354">Information about this shop closed</translation> <translation id="9114502155681725011">Open the tab group action menu for tab group <ph name="TITLE_OF_GROUP" />, colour <ph name="COLOR_NAME" />.</translation> +<translation id="9169141410816678175">Everyone will immediately lose access to the '<ph name="GROUP_NAME" />' tab group, and it will be deleted from all devices</translation> <translation id="9169594135889675189">Add new tab to group</translation> <translation id="9216898458513705996">The tabs will remain open on this device but the group will be deleted from all devices signed in to <ph name="USER_EMAIL" /></translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{Expand tab group with <ph name="TABS_COUNT_ONE" /> tab, colour <ph name="COLOR_NAME" />.}other{Expand tab group with <ph name="TABS_COUNT_MANY" /> tabs, colour <ph name="COLOR_NAME" />.}}</translation> +<translation id="94870150074703282">Delete group?</translation> <translation id="992256792861109788">Pink</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_es.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_es.xtb index 9083d35e..e8e6bdf 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_es.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_es.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Nuevo grupo de pestañas</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> pestaña cambiada, <ph name="ANY_CLOSED" /> cerrada}other{<ph name="MANY_CHANGED" /> pestañas cambiadas, <ph name="ANY_CLOSED" /> cerradas}}</translation> <translation id="4371591986692297148">Inactivo</translation> +<translation id="4431937619879060901">Perderás inmediatamente el acceso al grupo de pestañas <ph name="GROUP_NAME" /> y se eliminará de todos tus dispositivos</translation> <translation id="4460014764210899310">Sin agrupar</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{¿Cerrar 1 pestaña inactiva?}other{¿Cerrar <ph name="TAB_COUNT_MANY" /> pestañas inactivas?}}</translation> <translation id="4686942373615810936">Creado ahora mismo</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Ver información de la tienda, opción disponible cerca de la parte superior de la pantalla</translation> <translation id="5627941783489838464">No hay actualizaciones de pestañas</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Restaurar pestaña}other{Restaurar pestañas}}</translation> +<translation id="5647702255748985085">¿Salir del grupo?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> enlace de Chrome}other{<ph name="TABS_COUNT_MANY" /> enlaces de Chrome}}</translation> <translation id="58326064309361797">Arrastra las pestañas para agruparlas</translation> <translation id="5901630391730855834">Amarillo</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" /> seleccionado</translation> <translation id="7326879924029668159">Ver política de devoluciones y más</translation> <translation id="7352298686197644113">Consulta qué artículo de las pestañas abiertas tiene un precio más bajo</translation> +<translation id="742664698522525515">¿Conservar grupo?</translation> <translation id="7452985128687107478">Los grupos de pestañas se guardan y se actualizan automáticamente en todos tus dispositivos</translation> <translation id="747459581954555080">Restaurar todo</translation> <translation id="750886945254958667">Mantén este grupo para añadir pestañas más tarde o abandónalo si ya no quieres tener acceso</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Cerrar todo</translation> <translation id="9090098097337832354">Información sobre esta tienda cerrada</translation> <translation id="9114502155681725011">Abrir el menú de acciones del grupo de pestañas <ph name="TITLE_OF_GROUP" />, color <ph name="COLOR_NAME" />.</translation> +<translation id="9169141410816678175">Todos los usuarios perderán inmediatamente el acceso al grupo de pestañas <ph name="GROUP_NAME" /> y se eliminará de todos los dispositivos</translation> <translation id="9169594135889675189">Añadir una pestaña al grupo</translation> <translation id="9216898458513705996">Las pestañas permanecerán abiertas en este dispositivo, pero el grupo se eliminará de todos los dispositivos en los que se haya iniciado sesión con <ph name="USER_EMAIL" /></translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{Desplegar el grupo de pestañas con <ph name="TABS_COUNT_ONE" /> pestaña de color <ph name="COLOR_NAME" />.}other{Desplegar el grupo de pestañas con <ph name="TABS_COUNT_MANY" /> pestañas de color <ph name="COLOR_NAME" />.}}</translation> +<translation id="94870150074703282">¿Eliminar grupo?</translation> <translation id="992256792861109788">Rosa</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_et.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_et.xtb index 1580998..7e0eafa 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_et.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_et.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Uus vahelehegrupp</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> vahelehte muudeti, <ph name="ANY_CLOSED" /> suleti}other{<ph name="MANY_CHANGED" /> vahelehte muudeti, <ph name="ANY_CLOSED" /> suleti}}</translation> <translation id="4371591986692297148">Mitteaktiivne</translation> +<translation id="4431937619879060901">Kaotate kohe juurdepääsu vahelehegrupile „<ph name="GROUP_NAME" />“ ja see kustutatakse kõigist teie seadmetest</translation> <translation id="4460014764210899310">Tühista grupeerimine</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{Kas sulgeda üks inaktiivne vaheleht?}other{Kas sulgeda <ph name="TAB_COUNT_MANY" /> inaktiivset vahelehte?}}</translation> <translation id="4686942373615810936">Loodud just praegu</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Poe teabe vaatamine, valik saadaval ekraanikuva ülaosas</translation> <translation id="5627941783489838464">Vahelehtede värskendused puuduvad</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Taasta vaheleht}other{Taasta vahelehed}}</translation> +<translation id="5647702255748985085">Kas soovite grupist lahkuda?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> link Chrome'ist}other{<ph name="TABS_COUNT_MANY" /> linki Chrome'ist}}</translation> <translation id="58326064309361797">Lohistage vahelehti, et neid grupeerida</translation> <translation id="5901630391730855834">Kollane</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" /> on valitud</translation> <translation id="7326879924029668159">Vaadake tagastuseeskirju ja muud</translation> <translation id="7352298686197644113">Vaadake, millisel avatud vahelehtedel olevatest toodetest on soodsaim hind</translation> +<translation id="742664698522525515">Kas soovite grupi säilitada?</translation> <translation id="7452985128687107478">Vahelehegrupid salvestuvad automaatselt ja värskendatakse kõikides teie seadmetes</translation> <translation id="747459581954555080">Taasta kõik</translation> <translation id="750886945254958667">Saate säilitada selle grupi, et lisada vahelehed hiljem, või lahkuda sellest, kui te ei soovi sellele enam juurde pääseda</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Sule kõik</translation> <translation id="9090098097337832354">Selle poe teave suleti</translation> <translation id="9114502155681725011">Avage vahelehegrupi <ph name="TITLE_OF_GROUP" /> toimingute menüü, värv <ph name="COLOR_NAME" />.</translation> +<translation id="9169141410816678175">Kõik kaotavad kohe juurdepääsu vahelehegrupile „<ph name="GROUP_NAME" />“ ja see kustutatakse kõigist seadmetest</translation> <translation id="9169594135889675189">Lisa gruppi uus vaheleht</translation> <translation id="9216898458513705996">Vahelehegrupid jäävad selles seadmes avatuks, aga grupp kustutatakse kõikidest teistest seadmetest, mis on kontoga <ph name="USER_EMAIL" /> sisse logitud</translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{Laienda <ph name="TABS_COUNT_ONE" /> vahelehega vahelehegruppi, värv on <ph name="COLOR_NAME" />.}other{Laienda <ph name="TABS_COUNT_MANY" /> vahelehega vahelehegruppi, värv on <ph name="COLOR_NAME" />.}}</translation> +<translation id="94870150074703282">Kas soovite grupi kustutada?</translation> <translation id="992256792861109788">Roosa</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fa.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fa.xtb index 292919a..ebcb718 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fa.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fa.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">گروه برگه جدید</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> برگه تغییر کرد، <ph name="ANY_CLOSED" /> برگه بسته شد}one{<ph name="MANY_CHANGED" /> برگه تغییر کرد، <ph name="ANY_CLOSED" /> برگه بسته شد}other{<ph name="MANY_CHANGED" /> برگه تغییر کرد، <ph name="ANY_CLOSED" /> برگه بسته شد}}</translation> <translation id="4371591986692297148">غیرفعال</translation> +<translation id="4431937619879060901">دسترسی به گروه برگه «<ph name="GROUP_NAME" />» را فوراً ازدست میدهید و این گروه از همه دستگاههایتان حذف میشود</translation> <translation id="4460014764210899310">لغو گروهبندی</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{۱ برگه غیرفعال بسته شود؟}one{<ph name="TAB_COUNT_MANY" /> برگه غیرفعال بسته شود؟}other{<ph name="TAB_COUNT_MANY" /> برگه غیرفعال بسته شود؟}}</translation> <translation id="4686942373615810936">همین الآن ایجاد شد</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">مشاهده اطلاعات فروشگاه، گزینه مربوطه در نزدیکی بالای صفحه قرار دارد</translation> <translation id="5627941783489838464">برگه هیچ بهروزرسانیای ندارد</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{بازیابی برگه}one{بازیابی برگه}other{بازیابی برگهها}}</translation> +<translation id="5647702255748985085">گروه را ترک میکنید؟</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> پیوند از Chrome}one{<ph name="TABS_COUNT_MANY" /> پیوند از Chrome}other{<ph name="TABS_COUNT_MANY" /> پیوند از Chrome}}</translation> <translation id="58326064309361797">برای گروهبندی برگهها، آنها را بکشید</translation> <translation id="5901630391730855834">زرد</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" /> انتخاب شده است</translation> <translation id="7326879924029668159">دیدن خطمشی برگرداندن و موارد دیگر</translation> <translation id="7352298686197644113">ببینید کدام مورد در برگههای باز قیمت کمتری دارد</translation> +<translation id="742664698522525515">گروه نگه داشته شود؟</translation> <translation id="7452985128687107478">گروههای برگه بهطور خودکار در همه دستگاهها ذخیره و بهروز میشود</translation> <translation id="747459581954555080">بازیابی همه</translation> <translation id="750886945254958667">این گروه را نگه دارید تا بعداً به آن برگه اضافه کنید یا اگر دیگر نمیخواهید به آن دسترسی داشته باشید، آن را ترک کنید</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">بستن همه</translation> <translation id="9090098097337832354">اطلاعات مربوط به این فروشگاه بسته شد</translation> <translation id="9114502155681725011">باز کردن منوِ کنشهای گروه برگه برای گروه برگه <ph name="TITLE_OF_GROUP" />، بهرنگ <ph name="COLOR_NAME" />.</translation> +<translation id="9169141410816678175">همه افراد دسترسی به گروه برگه «<ph name="GROUP_NAME" />» را فوراً ازدست میدهند و این گروه از همه دستگاهها حذف میشود</translation> <translation id="9169594135889675189">افزودن برگه جدید به گروه</translation> <translation id="9216898458513705996">برگهها در این دستگاه باز میماند اما گروه از همه دستگاههای واردشده به حساب <ph name="USER_EMAIL" /> حذف خواهد شد</translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{ازهم باز کردن گروه برگه با <ph name="TABS_COUNT_ONE" /> برگه، رنگ <ph name="COLOR_NAME" />.}one{ازهم باز کردن گروه برگه با <ph name="TABS_COUNT_MANY" /> برگه، رنگ <ph name="COLOR_NAME" />.}other{ازهم باز کردن گروه برگه با <ph name="TABS_COUNT_MANY" /> برگه، رنگ <ph name="COLOR_NAME" />.}}</translation> +<translation id="94870150074703282">گروه حذف شود؟</translation> <translation id="992256792861109788">صورتی</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fi.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fi.xtb index 0b06564..9b9989d 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fi.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fi.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Uusi välilehtiryhmä</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> välilehteä muutettu, <ph name="ANY_CLOSED" /> suljettu}other{<ph name="MANY_CHANGED" /> välilehteä muutettu, <ph name="ANY_CLOSED" /> suljettu}}</translation> <translation id="4371591986692297148">Ei aktiivinen</translation> +<translation id="4431937619879060901">Menetät välittömästi pääsyn välilehtiryhmään "<ph name="GROUP_NAME" />", ja se poistetaan kaikilta laitteiltasi</translation> <translation id="4460014764210899310">Poista ryhmittely</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{Suljetaanko 1 ei-aktiivinen välilehti?}other{Suljetaanko <ph name="TAB_COUNT_MANY" /> ei-aktiivista välilehteä?}}</translation> <translation id="4686942373615810936">Luotiin juuri nyt</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Näytä kaupan tiedot, vaihtoehto lähellä näytön yläreunaa</translation> <translation id="5627941783489838464">Ei välilehtipäivityksiä</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Palauta välilehti}other{Palauta välilehdet}}</translation> +<translation id="5647702255748985085">Haluatko poistua ryhmästä?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> linkki Chromesta}other{<ph name="TABS_COUNT_MANY" /> linkkiä Chromesta}}</translation> <translation id="58326064309361797">Ryhmittele välilehtiä vetämällä niitä</translation> <translation id="5901630391730855834">Keltainen</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" />, valittu</translation> <translation id="7326879924029668159">Katso palautuskäytäntö ja muita</translation> <translation id="7352298686197644113">Katso, minkä avoimilta välilehdiltäsi löytyvän tuotteen voit saada edullisempaan hintaan</translation> +<translation id="742664698522525515">Säilytetäänkö ryhmä?</translation> <translation id="7452985128687107478">Välilehtiryhmät tallentuvat ja päivittyvät automaattisesti kaikilla laitteillasi</translation> <translation id="747459581954555080">Palauta kaikki</translation> <translation id="750886945254958667">Säilytä ryhmä, niin voit lisätä siihen välilehtiä myöhemmin, tai poistu ryhmästä, jos et enää halua käyttää sitä</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Sulje kaikki</translation> <translation id="9090098097337832354">"Tietoja tästä kaupasta" suljettu</translation> <translation id="9114502155681725011">Avaa välilehtiryhmän toimintovalikko välilehtiryhmälle <ph name="TITLE_OF_GROUP" />, värinä <ph name="COLOR_NAME" />.</translation> +<translation id="9169141410816678175">Kaikki menettävät heti pääsyn välilehtiryhmään "<ph name="GROUP_NAME" />", ja se poistetaan kaikilta laitteilta</translation> <translation id="9169594135889675189">Luo ryhmään uusi välilehti</translation> <translation id="9216898458513705996">Välilehdet pysyvät auki tällä laitteella, mutta ryhmä poistetaan kaikilta laitteilta, jotka ovat kirjautuneena tilille <ph name="USER_EMAIL" /></translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{Laajenna välilehtiryhmä, jossa on <ph name="TABS_COUNT_ONE" /> välilehti, väri <ph name="COLOR_NAME" />.}other{Laajenna välilehtiryhmä, jossa on <ph name="TABS_COUNT_MANY" /> välilehteä, väri <ph name="COLOR_NAME" />.}}</translation> +<translation id="94870150074703282">Poistetaanko ryhmä?</translation> <translation id="992256792861109788">Vaaleanpunainen</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fil.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fil.xtb index 4babe32..9c4e149f 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fil.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fil.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Bagong grupo ng tab</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{Binago ang <ph name="ONE_CHANGED" /> tab, isinara ang<ph name="ANY_CLOSED" />}one{Binago ang <ph name="MANY_CHANGED" /> tab, isinara ang<ph name="ANY_CLOSED" />}other{Binago ang <ph name="MANY_CHANGED" /> na tab, isinara ang<ph name="ANY_CLOSED" />}}</translation> <translation id="4371591986692297148">Hindi Aktibo</translation> +<translation id="4431937619879060901">Mawawalan ka kaagad ng access sa grupo ng tab na "<ph name="GROUP_NAME" />," at ide-delete ito sa lahat ng device mo</translation> <translation id="4460014764210899310">I-ungroup</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{Isara ang 1 hindi aktibong tab?}one{Isara ang <ph name="TAB_COUNT_MANY" /> hindi aktibong tab?}other{Isara ang <ph name="TAB_COUNT_MANY" /> na hindi aktibong tab?}}</translation> <translation id="4686942373615810936">Kakagawa lang</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Tingnan ang impormasyon ng store, available ang opsyon malapit sa itaas ng screen</translation> <translation id="5627941783489838464">Walang update sa tab</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{I-restore ang tab}one{I-restore ang mga tab}other{I-restore ang mga tab}}</translation> +<translation id="5647702255748985085">Umalis sa grupo?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> link mula sa Chrome}one{<ph name="TABS_COUNT_MANY" /> link mula sa Chrome}other{<ph name="TABS_COUNT_MANY" /> na link mula sa Chrome}}</translation> <translation id="58326064309361797">I-drag ang mga tab para pagpangkatin ang mga ito</translation> <translation id="5901630391730855834">Dilaw</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002">Pinili ang <ph name="COLOR_NAME" /></translation> <translation id="7326879924029668159">Tingnan ang patakaran sa pagbabalik at higit pa</translation> <translation id="7352298686197644113">Tingnan kung aling item sa iyong mga nakabukas na tab ang may mas mababang presyo</translation> +<translation id="742664698522525515">Panatilihin ang grupo?</translation> <translation id="7452985128687107478">Awtomatikong nase-save at naa-update ang mga grupo ng tab sa lahat ng iyong device</translation> <translation id="747459581954555080">Ipanumbalik lahat</translation> <translation id="750886945254958667">Panatilihin ang grupong ito para magdagdag ng mga tab dito sa ibang pagkakataon, o umalis sa grupo kung ayaw mo na itong ma-access</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Isara lahat</translation> <translation id="9090098097337832354">Isinara ang impormasyon tungkol sa store na ito</translation> <translation id="9114502155681725011">Buksan ang menu ng aksyon ng grupo ng tab para sa grupo ng tab na <ph name="TITLE_OF_GROUP" />, na kulay <ph name="COLOR_NAME" />.</translation> +<translation id="9169141410816678175">Mawawalan kaagad ng access ang lahat sa grupo ng tab na "<ph name="GROUP_NAME" />," at made-delete ito sa lahat ng device</translation> <translation id="9169594135889675189">Magdagdag ng bagong tab sa grupo</translation> <translation id="9216898458513705996">Mananatiling nakabukas ang mga tab sa device na ito pero made-delete ang grupo sa lahat ng device na naka-sign in sa <ph name="USER_EMAIL" /></translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{I-expand ang grupo ng tab na may <ph name="TABS_COUNT_ONE" /> tab, na may kulay na <ph name="COLOR_NAME" />.}one{I-expand ang grupo ng tab na may <ph name="TABS_COUNT_MANY" /> tab, na may kulay na <ph name="COLOR_NAME" />.}other{I-expand ang grupo ng tab na may <ph name="TABS_COUNT_MANY" /> na tab, na may kulay na <ph name="COLOR_NAME" />.}}</translation> +<translation id="94870150074703282">I-delete ang grupo?</translation> <translation id="992256792861109788">Pink</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fr-CA.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fr-CA.xtb index f430c64d..c847e31 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fr-CA.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fr-CA.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Nouveau groupe d'onglets</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> onglet modifié, <ph name="ANY_CLOSED" /> fermés}one{<ph name="MANY_CHANGED" /> onglet modifié, <ph name="ANY_CLOSED" /> fermés}other{<ph name="MANY_CHANGED" /> onglets modifiés, <ph name="ANY_CLOSED" /> fermés}}</translation> <translation id="4371591986692297148">Inactif</translation> +<translation id="4431937619879060901">Vous perdrez immédiatement l'accès au groupe d'onglets « <ph name="GROUP_NAME" /> », et il sera supprimé de tous vos appareils</translation> <translation id="4460014764210899310">Dégrouper</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{Fermer 1 onglet inactif?}one{Fermer <ph name="TAB_COUNT_MANY" /> onglet inactif?}other{Fermer <ph name="TAB_COUNT_MANY" /> onglets inactifs?}}</translation> <translation id="4686942373615810936">Créé à l'instant</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Afficher les renseignements sur le magasin, option accessible dans le haut de l'écran</translation> <translation id="5627941783489838464">Aucune mise à jour des onglets</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Restaurer l'onglet}one{Restaurer l'onglet}other{Restaurer les onglets}}</translation> +<translation id="5647702255748985085">Quitter le groupe?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> lien de Chrome}one{<ph name="TABS_COUNT_MANY" /> lien de Chrome}other{<ph name="TABS_COUNT_MANY" /> liens de Chrome}}</translation> <translation id="58326064309361797">Faites glisser les onglets pour les regrouper</translation> <translation id="5901630391730855834">Jaune</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002">Couleur sélectionnée : <ph name="COLOR_NAME" /></translation> <translation id="7326879924029668159">Consultez la politique de retour et plus</translation> <translation id="7352298686197644113">Voir quel article dans vos onglets ouverts est offert à meilleur prix</translation> +<translation id="742664698522525515">Conserver le groupe?</translation> <translation id="7452985128687107478">Les groupes d'onglets sont automatiquement enregistrés et mis à jour sur tous vos appareils</translation> <translation id="747459581954555080">Tout restaurer</translation> <translation id="750886945254958667">Conservez ce groupe pour y ajouter des onglets plus tard ou quittez-le si vous ne voulez plus y accéder.</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Tout fermer</translation> <translation id="9090098097337832354">Les renseignements à propos de ce magasin sont fermés</translation> <translation id="9114502155681725011">Ouvrir le menu Action du groupe d'onglets <ph name="TITLE_OF_GROUP" /> de couleur <ph name="COLOR_NAME" />.</translation> +<translation id="9169141410816678175">Tout le monde perdra immédiatement l'accès au groupe d'onglets « <ph name="GROUP_NAME" /> », et celui-ci sera supprimé de tous les appareils</translation> <translation id="9169594135889675189">Ajouter un onglet au groupe</translation> <translation id="9216898458513705996">Les onglets resteront ouverts sur cet appareil, mais le groupe sera supprimé de tous les appareils connectés à <ph name="USER_EMAIL" /></translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{Développer le groupe d'onglets de couleur <ph name="COLOR_NAME" /> qui contient <ph name="TABS_COUNT_ONE" /> onglet.}one{Développer le groupe d'onglets de couleur <ph name="COLOR_NAME" /> qui contient <ph name="TABS_COUNT_MANY" /> onglet.}other{Développer le groupe d'onglets de couleur <ph name="COLOR_NAME" /> qui contient <ph name="TABS_COUNT_MANY" /> onglets.}}</translation> +<translation id="94870150074703282">Supprimer le groupe?</translation> <translation id="992256792861109788">Rose</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fr.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fr.xtb index 4bc1b68..386d6be 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fr.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_fr.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Nouveau groupe d'onglets</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> onglet modifié, <ph name="ANY_CLOSED" /> fermé(s)}one{<ph name="MANY_CHANGED" /> onglet modifié, <ph name="ANY_CLOSED" /> fermé(s)}other{<ph name="MANY_CHANGED" /> onglets modifiés, <ph name="ANY_CLOSED" /> fermé(s)}}</translation> <translation id="4371591986692297148">Inactive</translation> +<translation id="4431937619879060901">Vous perdrez immédiatement l'accès au groupe d'onglets "<ph name="GROUP_NAME" />", qui sera supprimé de tous vos appareils</translation> <translation id="4460014764210899310">Dégrouper</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{Fermer 1 onglet inactif ?}one{Fermer <ph name="TAB_COUNT_MANY" /> onglet inactif ?}other{Fermer <ph name="TAB_COUNT_MANY" /> onglets inactifs ?}}</translation> <translation id="4686942373615810936">Créé à l'instant</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Afficher les infos sur le magasin, option disponible en haut de l'écran</translation> <translation id="5627941783489838464">Aucun onglet modifié</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Restaurer l'onglet}one{Restaurer l'onglet}other{Restaurer les onglets}}</translation> +<translation id="5647702255748985085">Quitter le groupe ?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> lien de Chrome}one{<ph name="TABS_COUNT_MANY" /> lien de Chrome}other{<ph name="TABS_COUNT_MANY" /> liens de Chrome}}</translation> <translation id="58326064309361797">Faites glisser les onglets pour les regrouper</translation> <translation id="5901630391730855834">Jaune</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" /> sélectionné</translation> <translation id="7326879924029668159">Voir les conditions de retour et plus</translation> <translation id="7352298686197644113">Affichez l'article le moins cher parmi ceux présentés dans les onglets ouverts</translation> +<translation id="742664698522525515">Conserver le groupe ?</translation> <translation id="7452985128687107478">Les groupes d'onglets sont automatiquement enregistrés et mis à jour sur tous vos appareils</translation> <translation id="747459581954555080">Tout restaurer</translation> <translation id="750886945254958667">Conservez ce groupe pour y ajouter des onglets plus tard, ou quittez-le si ne souhaitez plus y avoir accès</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Tout fermer</translation> <translation id="9090098097337832354">Fiche d'infos sur ce magasin fermée</translation> <translation id="9114502155681725011">Ouvrir le menu d'actions du groupe d'onglets <ph name="TITLE_OF_GROUP" />, couleur <ph name="COLOR_NAME" />.</translation> +<translation id="9169141410816678175">Tout le monde perdra immédiatement l'accès au groupe d'onglets "<ph name="GROUP_NAME" />", qui sera supprimé de tous les appareils</translation> <translation id="9169594135889675189">Ajouter un nouvel onglet au groupe</translation> <translation id="9216898458513705996">Les onglets resteront ouverts sur cet appareil, mais le groupe sera supprimé de tous les appareils connectés à <ph name="USER_EMAIL" /></translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{Développer le groupe d'onglets de couleur <ph name="COLOR_NAME" /> comprenant <ph name="TABS_COUNT_ONE" /> onglet.}one{Développer le groupe d'onglets de couleur <ph name="COLOR_NAME" /> comprenant <ph name="TABS_COUNT_MANY" /> onglet.}other{Développer le groupe d'onglets de couleur <ph name="COLOR_NAME" /> comprenant <ph name="TABS_COUNT_MANY" /> onglets.}}</translation> +<translation id="94870150074703282">Supprimer le groupe ?</translation> <translation id="992256792861109788">Rose</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_gl.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_gl.xtb index b03d56f..2d14446e 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_gl.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_gl.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Novo grupo de pestanas</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> pestana cambiada. Pestanas pechadas: <ph name="ANY_CLOSED" />}other{<ph name="MANY_CHANGED" /> pestanas cambiadas. Pestanas pechadas: <ph name="ANY_CLOSED" />}}</translation> <translation id="4371591986692297148">Inactivo</translation> +<translation id="4431937619879060901">Perderás inmediatamente o acceso ao grupo de pestanas <ph name="GROUP_NAME" />, que se eliminará de todos os dispositivos</translation> <translation id="4460014764210899310">Desagrupar</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{Queres pechar 1 pestana inactiva?}other{Queres pechar <ph name="TAB_COUNT_MANY" /> pestanas inactivas?}}</translation> <translation id="4686942373615810936">Creouse agora mesmo</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Ver información sobre a tenda, opción dispoñible preto da parte superior da pantalla</translation> <translation id="5627941783489838464">Non hai actualizacións de pestanas</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Restaurar pestana}other{Restaurar pestanas}}</translation> +<translation id="5647702255748985085">Queres saír do grupo?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> ligazón de Chrome}other{<ph name="TABS_COUNT_MANY" /> ligazóns de Chrome}}</translation> <translation id="58326064309361797">Arrastra as pestanas para agrupalas</translation> <translation id="5901630391730855834">Amarelo</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" />, opción seleccionada</translation> <translation id="7326879924029668159">Consulta a política de devolución e outra información</translation> <translation id="7352298686197644113">Descubre que artigo baixou de prezo nunha das pestanas que tes abertas</translation> +<translation id="742664698522525515">Queres manter o grupo?</translation> <translation id="7452985128687107478">Os grupos de pestanas gárdanse e actualízanse automaticamente en todos os dispositivos</translation> <translation id="747459581954555080">Restablecer todo</translation> <translation id="750886945254958667">Mantén este grupo para engadir pestanas máis adiante ou abandónao se xa non vas acceder a el</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Pechar todo</translation> <translation id="9090098097337832354">A folla de información sobre esta tenda está pechada</translation> <translation id="9114502155681725011">Abrir o menú de accións do grupo de pestanas <ph name="TITLE_OF_GROUP" />, de cor <ph name="COLOR_NAME" />.</translation> +<translation id="9169141410816678175">Todas as persoas perderán inmediatamente o acceso ao grupo de pestanas <ph name="GROUP_NAME" />, que se eliminará de todos os dispositivos</translation> <translation id="9169594135889675189">Engadir nova pestana ao grupo</translation> <translation id="9216898458513705996">As pestanas permanecerán abertas neste dispositivo, pero o grupo eliminarase de todos os dispositivos nos que teñas a sesión iniciada con <ph name="USER_EMAIL" /></translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{Desprega o grupo de pestanas de cor <ph name="COLOR_NAME" /> que ten <ph name="TABS_COUNT_ONE" /> pestana.}other{Desprega o grupo de pestanas de cor <ph name="COLOR_NAME" /> que ten <ph name="TABS_COUNT_MANY" /> pestanas.}}</translation> +<translation id="94870150074703282">Queres eliminar o grupo?</translation> <translation id="992256792861109788">Rosa</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_gu.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_gu.xtb index 6b45be0d..7645030 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_gu.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_gu.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">ટૅબનું નવું ગ્રૂપ</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> ટૅબ બદલ્યું, <ph name="ANY_CLOSED" /> બંધ કર્યા}one{<ph name="MANY_CHANGED" /> ટૅબ બદલ્યું, <ph name="ANY_CLOSED" /> બંધ કર્યા}other{<ph name="MANY_CHANGED" /> ટૅબ બદલ્યા, <ph name="ANY_CLOSED" /> બંધ કર્યા}}</translation> <translation id="4371591986692297148">નિષ્ક્રિય</translation> +<translation id="4431937619879060901">તમે ટૅબના ગ્રૂપ “<ph name="GROUP_NAME" />”નો ઍક્સેસ તરત જ ગુમાવશો અને તમારા બધા ડિવાઇસમાંથી તે ડિલીટ કરવામાં આવશે</translation> <translation id="4460014764210899310">અલગ થયેલું ગ્રૂપ</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{1 નિષ્ક્રિય ટૅબ બંધ કરીએ?}one{<ph name="TAB_COUNT_MANY" /> નિષ્ક્રિય ટૅબ બંધ કરીએ?}other{<ph name="TAB_COUNT_MANY" /> નિષ્ક્રિય ટૅબ બંધ કરીએ?}}</translation> <translation id="4686942373615810936">હમણાં જ બનાવ્યું</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">સ્ટોરની માહિતી જુઓ, વિકલ્પ સ્ક્રીનની ટોચની નજીક ઉપલબ્ધ છે</translation> <translation id="5627941783489838464">ટૅબ સંબંધી કોઈ અપડેટ નથી</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{ટૅબને રિસ્ટોર કરો}one{ટૅબને રિસ્ટોર કરો}other{ટૅબને રિસ્ટોર કરો}}</translation> +<translation id="5647702255748985085">ગ્રૂપ છોડીએ?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{Chromeમાંથી <ph name="TABS_COUNT_ONE" /> લિંક}one{Chromeમાંથી <ph name="TABS_COUNT_MANY" /> લિંક}other{Chromeમાંથી <ph name="TABS_COUNT_MANY" /> લિંક}}</translation> <translation id="58326064309361797">ટૅબનું ગ્રૂપ બનાવવા માટે તેને ખેંચો</translation> <translation id="5901630391730855834">પીળો</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" /> પસંદ કરેલો છે</translation> <translation id="7326879924029668159">પરત કરવાની પૉલિસી અને બીજું ઘણું બધું જુઓ</translation> <translation id="7352298686197644113">તમારી ખુલ્લી ટૅબમાં કઈ આઇટમની કિંમત ઓછી થઈ છે, તે જુઓ</translation> +<translation id="742664698522525515">ગ્રૂપ રાખીએ?</translation> <translation id="7452985128687107478">ટૅબના ગ્રૂપ તમારા બધા ડિવાઇસ પર ઑટોમૅટિક રીતે સાચવવામાં અને અપડેટ કરવામાં આવે છે</translation> <translation id="747459581954555080">બધુ પુનર્પ્રાપ્ત કરો</translation> <translation id="750886945254958667">પછીથી ટૅબ ઉમેરવા માટે આ ગ્રૂપ રાખો અથવા જો તમને હવે તેનો ઍક્સેસ ન જોઈતો હોય તો તેને છોડી દો</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">બધા બંધ કરો</translation> <translation id="9090098097337832354">આ સ્ટોર વિશેની માહિતી બતાવવાની બંધ કરી છે</translation> <translation id="9114502155681725011"><ph name="COLOR_NAME" /> રંગના, ટૅબના ગ્રૂપ <ph name="TITLE_OF_GROUP" /> માટેનું ટૅબના ગ્રૂપનું ક્રિયા મેનૂ ખોલો.</translation> +<translation id="9169141410816678175">દરેક વ્યક્તિ ટૅબના ગ્રૂપ “<ph name="GROUP_NAME" />”નો ઍક્સેસ તરત જ ગુમાવશે અને બધા ડિવાઇસમાંથી તે ડિલીટ કરવામાં આવશે</translation> <translation id="9169594135889675189">ગ્રૂપમાં નવું ટૅબ ઉમેરો</translation> <translation id="9216898458513705996">આ ડિવાઇસ પર ટૅબ ખુલ્લા રહેશે, પરંતુ <ph name="USER_EMAIL" />માં સાઇન ઇન કરેલા બધા ડિવાઇસમાંથી ગ્રૂપ ડિલીટ કરવામાં આવશે</translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{<ph name="COLOR_NAME" /> રંગનું <ph name="TABS_COUNT_ONE" /> ટૅબ ધરાવતા ટૅબના ગ્રૂપને મોટું કરો.}one{<ph name="COLOR_NAME" /> રંગનું <ph name="TABS_COUNT_MANY" /> ટૅબ ધરાવતા ટૅબના ગ્રૂપને મોટું કરો.}other{<ph name="COLOR_NAME" /> રંગના <ph name="TABS_COUNT_MANY" /> ટૅબ ધરાવતા ટૅબના ગ્રૂપને મોટું કરો.}}</translation> +<translation id="94870150074703282">ગ્રૂપ ડિલીટ કરીએ?</translation> <translation id="992256792861109788">ગુલાબી</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_hr.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_hr.xtb index 070019d..60ed970 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_hr.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_hr.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Nova grupa kartica</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{Promijenjena je <ph name="ONE_CHANGED" /> kartica, zatvoreno: <ph name="ANY_CLOSED" />}one{Promijenjena je <ph name="MANY_CHANGED" /> kartica, zatvoreno: <ph name="ANY_CLOSED" />}few{Promijenjene su <ph name="MANY_CHANGED" /> kartice, zatvoreno: <ph name="ANY_CLOSED" />}other{Promijenjeno je <ph name="MANY_CHANGED" /> kartica, zatvoreno: <ph name="ANY_CLOSED" />}}</translation> <translation id="4371591986692297148">neaktivan</translation> +<translation id="4431937619879060901">Odmah ćete izgubiti pristup grupi kartica <ph name="GROUP_NAME" /> i ona će se izbrisati sa svih vaših uređaja</translation> <translation id="4460014764210899310">Razgrupiraj</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{Želite li zatvoriti jednu neaktivnu karticu?}one{Želite li zatvoriti <ph name="TAB_COUNT_MANY" /> neaktivnu karticu?}few{Želite li zatvoriti <ph name="TAB_COUNT_MANY" /> neaktivne kartice?}other{Želite li zatvoriti <ph name="TAB_COUNT_MANY" /> neaktivnih kartica?}}</translation> <translation id="4686942373615810936">Upravo izrađeno</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Pogledajte podatke o trgovini, opciju koja je dostupna pri vrhu zaslona</translation> <translation id="5627941783489838464">Nema ažuriranja kartica</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Vrati karticu}one{Vrati kartice}few{Vrati kartice}other{Vrati kartice}}</translation> +<translation id="5647702255748985085">Želite li napustiti grupu?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> veza iz Chromea}one{<ph name="TABS_COUNT_MANY" /> veza iz Chromea}few{<ph name="TABS_COUNT_MANY" /> veze iz Chromea}other{<ph name="TABS_COUNT_MANY" /> veza iz Chromea}}</translation> <translation id="58326064309361797">Povucite kartice da biste ih grupirali</translation> <translation id="5901630391730855834">Žuta</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002">Odabrana je <ph name="COLOR_NAME" /> boja</translation> <translation id="7326879924029668159">Pogledajte pravila povrata i druge informacije</translation> <translation id="7352298686197644113">Pogledajte koji artikl na otvorenim karticama ima nižu cijenu</translation> +<translation id="742664698522525515">Želite li i zadržati grupu?</translation> <translation id="7452985128687107478">Grupe kartica automatski se spremaju i ažuriraju na svim vašim uređajima</translation> <translation id="747459581954555080">Obnovi sve</translation> <translation id="750886945254958667">Zadržite ovu grupu da biste kasnije dodali kartice ili je napustite ako joj više ne želite pristupati</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Zatvori sve</translation> <translation id="9090098097337832354">Zatvorene su informacije o ovoj trgovini</translation> <translation id="9114502155681725011">Otvorite izbornik aktivnosti grupe kartica za grupu kartica <ph name="TITLE_OF_GROUP" />, <ph name="COLOR_NAME" /> boja.</translation> +<translation id="9169141410816678175">Svi će odmah izgubiti pristup grupi kartica <ph name="GROUP_NAME" /> i izbrisat će se sa svih uređaja</translation> <translation id="9169594135889675189">Dodajte novu karticu grupi</translation> <translation id="9216898458513705996">Kartice će ostati otvorene na ovom uređaju, ali će se grupa izbrisati sa svih uređaja na kojima ste prijavljeni na <ph name="USER_EMAIL" /></translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{Proširite grupu kartica s <ph name="TABS_COUNT_ONE" /> karticom, <ph name="COLOR_NAME" /> boja.}one{Proširite grupu kartica s <ph name="TABS_COUNT_MANY" /> karticom, <ph name="COLOR_NAME" /> boja.}few{Proširite grupu kartica s <ph name="TABS_COUNT_MANY" /> kartice, <ph name="COLOR_NAME" /> boja.}other{Proširite grupu kartica s <ph name="TABS_COUNT_MANY" /> kartica, <ph name="COLOR_NAME" /> boja.}}</translation> +<translation id="94870150074703282">Želite li izbrisati grupu?</translation> <translation id="992256792861109788">Ružičasta</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_hu.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_hu.xtb index c8d32dc..e12e57f8 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_hu.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_hu.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Új lapcsoport</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> lap módosítva, <ph name="ANY_CLOSED" /> bezárva}other{<ph name="MANY_CHANGED" /> lap módosítva, <ph name="ANY_CLOSED" /> lap bezárva}}</translation> <translation id="4371591986692297148">Inaktív</translation> +<translation id="4431937619879060901">Azonnal elveszíti a(z) „<ph name="GROUP_NAME" />” lapcsoporthoz való hozzáférését, és a lapcsoport az összes eszközéről törlődik.</translation> <translation id="4460014764210899310">Csoportosítás megszüntetése</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{Bezár 1 inaktív lapot?}other{Bezár <ph name="TAB_COUNT_MANY" /> inaktív lapot?}}</translation> <translation id="4686942373615810936">Épp most létrehozva</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Az üzlet adatainak megtekintése; a lehetőség a képernyő tetején található</translation> <translation id="5627941783489838464">Nincsenek lapfrissítések</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Lap visszaállítása}other{Lapok visszaállítása}}</translation> +<translation id="5647702255748985085">Elhagyja a csoportot?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> link a Chrome-ból}other{<ph name="TABS_COUNT_MANY" /> link a Chrome-ból}}</translation> <translation id="58326064309361797">A lapokat húzással csoportosíthatja</translation> <translation id="5901630391730855834">Sárga</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" />: kiválasztva</translation> <translation id="7326879924029668159">Visszaküldési irányelvek és egyebek megjelenítése</translation> <translation id="7352298686197644113">Láthatja, hogy a megnyitott lapokon lévő termékek közül melyiknek alacsonyabb az ára</translation> +<translation id="742664698522525515">Megtartja a csoportot?</translation> <translation id="7452985128687107478">A rendszer automatikusan menti a lapcsoportokat, és frissíti őket az összes eszközén</translation> <translation id="747459581954555080">Összes visszaállítása</translation> <translation id="750886945254958667">Megtarthatja a csoportot, ha később szeretne lapokat hozzáadni, de ki is léphet belőle, ha a továbbiakban nem kíván hozzáférni.</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Az összes bezárása</translation> <translation id="9090098097337832354">Az üzlettel kapcsolatos információs panel be van zárva</translation> <translation id="9114502155681725011">A(z) <ph name="TITLE_OF_GROUP" /> nevű, <ph name="COLOR_NAME" /> színű lapcsoport műveleti menüjének megnyitása.</translation> +<translation id="9169141410816678175">Mindenki azonnal elveszíti a(z) „<ph name="GROUP_NAME" />” lapcsoporthoz való hozzáférését, és a lapcsoport az összes eszközről törlődik.</translation> <translation id="9169594135889675189">Új lap hozzáadása a csoporthoz</translation> <translation id="9216898458513705996">A lapok nyitva maradnak ezen az eszközön, de a csoport törlődni fog minden olyan eszközről, amelyen be van jelentkezve a(z) <ph name="USER_EMAIL" /> fiókba.</translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{<ph name="TABS_COUNT_ONE" /> lapot tartalmazó, <ph name="COLOR_NAME" /> színű lapcsoport kibontása.}other{<ph name="TABS_COUNT_MANY" /> lapot tartalmazó, <ph name="COLOR_NAME" /> színű lapcsoport kibontása.}}</translation> +<translation id="94870150074703282">Törli a csoportot?</translation> <translation id="992256792861109788">Rózsaszín</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_id.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_id.xtb index 60ec3bb..82456d38 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_id.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_id.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Grup tab baru</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> tab diubah, <ph name="ANY_CLOSED" /> ditutup}other{<ph name="MANY_CHANGED" /> tab diubah, <ph name="ANY_CLOSED" /> ditutup}}</translation> <translation id="4371591986692297148">Tidak aktif</translation> +<translation id="4431937619879060901">Anda akan langsung kehilangan akses ke grup tab “<ph name="GROUP_NAME" />”, dan grup tersebut akan dihapus dari semua perangkat Anda</translation> <translation id="4460014764210899310">Pisahkan</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{Tutup 1 tab tidak aktif?}other{Tutup <ph name="TAB_COUNT_MANY" /> tab tidak aktif?}}</translation> <translation id="4686942373615810936">Baru saja dibuat</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Lihat info toko, opsi tersedia di dekat bagian atas layar</translation> <translation id="5627941783489838464">Tidak ada pembaruan tab</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Pulihkan tab}other{Pulihkan tab}}</translation> +<translation id="5647702255748985085">Keluar dari grup?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> link dari Chrome}other{<ph name="TABS_COUNT_MANY" /> link dari Chrome}}</translation> <translation id="58326064309361797">Tarik tab untuk mengelompokkannya</translation> <translation id="5901630391730855834">Kuning</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" /> Dipilih</translation> <translation id="7326879924029668159">Lihat kebijakan pengembalian dan lainnya</translation> <translation id="7352298686197644113">Lihat item mana di tab terbuka yang memiliki harga lebih rendah</translation> +<translation id="742664698522525515">Simpan grup?</translation> <translation id="7452985128687107478">Grup tab disimpan dan diperbarui otomatis di semua perangkat Anda</translation> <translation id="747459581954555080">Pulihkan semua</translation> <translation id="750886945254958667">Simpan grup ini untuk menambahkan tab nanti, atau keluar dari grup jika Anda tidak ingin lagi mengaksesnya</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Tutup semua</translation> <translation id="9090098097337832354">Informasi tentang toko ini ditutup</translation> <translation id="9114502155681725011">Buka menu tindakan grup tab untuk grup tab <ph name="TITLE_OF_GROUP" />, warna <ph name="COLOR_NAME" />.</translation> +<translation id="9169141410816678175">Semua orang akan langsung kehilangan akses ke grup tab "<ph name="GROUP_NAME" />", dan grup tersebut akan dihapus dari semua perangkat</translation> <translation id="9169594135889675189">Tambahkan tab baru ke grup</translation> <translation id="9216898458513705996">Tab akan tetap terbuka di perangkat ini, tetapi grup akan dihapus dari semua perangkat yang digunakan untuk login ke <ph name="USER_EMAIL" /></translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{Luaskan grup tab yang berisi <ph name="TABS_COUNT_ONE" /> tab, warna <ph name="COLOR_NAME" />.}other{Luaskan grup tab yang berisi <ph name="TABS_COUNT_MANY" /> tab, warna <ph name="COLOR_NAME" />.}}</translation> +<translation id="94870150074703282">Hapus grup?</translation> <translation id="992256792861109788">Pink</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_is.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_is.xtb index 5fa5900..e2e2c6bb 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_is.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_is.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Nýr flipahópur</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> flipa breytt, <ph name="ANY_CLOSED" /> lokað}one{<ph name="MANY_CHANGED" /> flipa breytt, <ph name="ANY_CLOSED" /> lokað}other{<ph name="MANY_CHANGED" /> flipum breytt, <ph name="ANY_CLOSED" /> lokað}}</translation> <translation id="4371591986692297148">Óvirkt</translation> +<translation id="4431937619879060901">Þú munt umsvifalaust missa aðgang að flipahópnum „<ph name="GROUP_NAME" />“ og honum verður eytt úr öllum tækjunum þínum</translation> <translation id="4460014764210899310">Sundra hópi</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{Loka einum óvirkum flipa?}one{Loka <ph name="TAB_COUNT_MANY" /> óvirkum flipa?}other{Loka <ph name="TAB_COUNT_MANY" /> óvirkum flipum?}}</translation> <translation id="4686942373615810936">Búinn til rétt í þessu</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Skoða upplýsingar um verslun, valkostir eru ofarlega á skjánum</translation> <translation id="5627941783489838464">Engar uppfærslur á flipum</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Endurheimta flipa}one{Endurheimta flipa}other{Endurheimta flipa}}</translation> +<translation id="5647702255748985085">Hætta í hópi?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> tengill frá Chrome}one{<ph name="TABS_COUNT_MANY" /> tengill frá Chrome}other{<ph name="TABS_COUNT_MANY" /> tenglar frá Chrome}}</translation> <translation id="58326064309361797">Dragðu flipa til að sameina þá</translation> <translation id="5901630391730855834">Gulur</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" /> er valinn</translation> <translation id="7326879924029668159">Sjá skilareglur og fleira</translation> <translation id="7352298686197644113">Sjáðu hvaða vara á opnum flipum er ódýrust</translation> +<translation id="742664698522525515">Halda hópnum?</translation> <translation id="7452985128687107478">Flipahópar vistast og uppfærast sjálfkrafa í öllum tækjunum þínum</translation> <translation id="747459581954555080">Endurheimta allt</translation> <translation id="750886945254958667">Haltu hópnum ef þú vilt bæta flipum við síðar eða yfirgefðu hann ef þú vilt ekki hafa aðgang að honum lengur.</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Loka öllu</translation> <translation id="9090098097337832354">Upplýsingum um þessa verslun lokað</translation> <translation id="9114502155681725011">Opnaðu aðgerðavalmynd flipahópsins „<ph name="TITLE_OF_GROUP" />“ í litnum „<ph name="COLOR_NAME" />“.</translation> +<translation id="9169141410816678175">Allir notendur munu umsvifalaust missa aðgang að flipahópnum „<ph name="GROUP_NAME" />“ og honum verður eytt úr öllum tækjum</translation> <translation id="9169594135889675189">Bæta nýjum flipa við hóp</translation> <translation id="9216898458513705996">Fliparnir verða opnir í þessu tæki en hópnum verður eytt úr öllum tækjum sem eru skráð inn á <ph name="USER_EMAIL" /></translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{Stækka flipahóp í litnum „<ph name="COLOR_NAME" />“ sem inniheldur <ph name="TABS_COUNT_ONE" /> flipa.}one{Stækka flipahóp í litnum „<ph name="COLOR_NAME" />“ sem inniheldur <ph name="TABS_COUNT_MANY" /> flipa.}other{Stækka flipahóp í litnum „<ph name="COLOR_NAME" />“ sem inniheldur <ph name="TABS_COUNT_MANY" /> flipa.}}</translation> +<translation id="94870150074703282">Eyða hópi?</translation> <translation id="992256792861109788">Bleikur</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_km.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_km.xtb index 4cf795b..33b76b2 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_km.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_km.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">ក្រុមផ្ទាំងថ្មី</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{បានប្ដូរ <ph name="ONE_CHANGED" /> ផ្ទាំង, បានបិទ <ph name="ANY_CLOSED" /> ផ្ទាំង}other{បានប្ដូរ <ph name="MANY_CHANGED" /> ផ្ទាំង, បានបិទ <ph name="ANY_CLOSED" /> ផ្ទាំង}}</translation> <translation id="4371591986692297148">អសកម្ម</translation> +<translation id="4431937619879060901">អ្នកនឹងបាត់បង់សិទ្ធិចូលប្រើក្រុមផ្ទាំង "<ph name="GROUP_NAME" />" ភ្លាមៗ ហើយវានឹងត្រូវបានលុបចេញពីឧបករណ៍ទាំងអស់របស់អ្នក</translation> <translation id="4460014764210899310">បំបែកក្រុម</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{បិទផ្ទាំងអសកម្ម 1 ឬ?}other{បិទផ្ទាំងអសកម្ម <ph name="TAB_COUNT_MANY" /> ឬ?}}</translation> <translation id="4686942373615810936">ទើបបានបង្កើតអម្បាញ់មិញ</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">មើលព័ត៌មានអំពីហាង ជម្រើសមាននៅជិតផ្នែកខាងលើអេក្រង់</translation> <translation id="5627941783489838464">មិនមានការធ្វើបច្ចុប្បន្នភាពផ្ទាំងទេ</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{ស្ដារផ្ទាំង}other{ស្ដារផ្ទាំង}}</translation> +<translation id="5647702255748985085">ចាកចេញពីក្រុមឬ?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{តំណ <ph name="TABS_COUNT_ONE" /> ពី Chrome}other{តំណ <ph name="TABS_COUNT_MANY" /> ពី Chrome}}</translation> <translation id="58326064309361797">អូសផ្ទាំងនានា ដើម្បីដាក់ផ្ទាំងទាំងនោះជាក្រុម</translation> <translation id="5901630391730855834">លឿង</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002">បានជ្រើសរើសពណ៌<ph name="COLOR_NAME" /></translation> <translation id="7326879924029668159">មើលគោលការណ៍បញ្ជូនទំនិញមកវិញ និងអ្វីៗជាច្រើនទៀត</translation> <translation id="7352298686197644113">មើលថាតើទំនិញមួយណានៅក្នុងផ្ទាំងដែលអ្នកកំពុងបើកមានតម្លៃទាបជាងមុន</translation> +<translation id="742664698522525515">រក្សាក្រុមឬ?</translation> <translation id="7452985128687107478">ក្រុមផ្ទាំងរក្សាទុក និងធ្វើបច្ចុប្បន្នភាពដោយស្វ័យប្រវត្តិនៅលើគ្រប់ឧបករណ៍របស់អ្នក</translation> <translation id="747459581954555080">ស្តារទាំងអស់</translation> <translation id="750886945254958667">រក្សាក្រុមនេះ ដើម្បីបញ្ចូលផ្ទាំងនៅពេលក្រោយ ឬចាកចេញពីក្រុមនេះ ប្រសិនបើអ្នកលែងចង់ចូលប្រើវាទៀតហើយ</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">បិទទាំងអស់</translation> <translation id="9090098097337832354">បានបិទព័ត៌មានអំពីហាងនេះ</translation> <translation id="9114502155681725011">បើកម៉ឺនុយសកម្មភាពក្រុមផ្ទាំងសម្រាប់ក្រុមផ្ទាំង <ph name="TITLE_OF_GROUP" /> ដែលមានពណ៌<ph name="COLOR_NAME" />។</translation> +<translation id="9169141410816678175">អ្នកគ្រប់គ្នានឹងបាត់បង់សិទ្ធិចូលប្រើក្រុមផ្ទាំង "<ph name="GROUP_NAME" />" ភ្លាមៗ ហើយក្រុមផ្ទាំងនេះនឹងត្រូវបានលុបចេញពីឧបករណ៍ទាំងអស់</translation> <translation id="9169594135889675189">បញ្ចូលផ្ទាំងថ្មីទៅក្រុម</translation> <translation id="9216898458513705996">ផ្ទាំងនឹងនៅតែបើកនៅលើឧបករណ៍នេះ ប៉ុន្តែក្រុមនឹងត្រូវបានលុបចេញពីគ្រប់ឧបករណ៍ដែលបានចូលគណនីដោយប្រើ <ph name="USER_EMAIL" /></translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{ពង្រីកក្រុមផ្ទាំងដែលមាន <ph name="TABS_COUNT_ONE" /> ផ្ទាំង ពណ៌<ph name="COLOR_NAME" />។}other{ពង្រីកក្រុមផ្ទាំងដែលមាន <ph name="TABS_COUNT_MANY" /> ផ្ទាំង ពណ៌<ph name="COLOR_NAME" />។}}</translation> +<translation id="94870150074703282">លុបក្រុមឬ?</translation> <translation id="992256792861109788">ផ្កាឈូក</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ko.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ko.xtb index 87e3735..b0a4527 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ko.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ko.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">새 탭 그룹</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{탭 <ph name="ONE_CHANGED" />개 변경됨, <ph name="ANY_CLOSED" />개 닫힘}other{탭 <ph name="MANY_CHANGED" />개 변경됨, <ph name="ANY_CLOSED" />개 닫힘}}</translation> <translation id="4371591986692297148">비활성</translation> +<translation id="4431937619879060901">'<ph name="GROUP_NAME" />' 탭 그룹에 대한 액세스 권한을 즉시 잃게 되며 탭 그룹이 모든 기기에서 삭제됩니다.</translation> <translation id="4460014764210899310">그룹 해제</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{비활성 탭 1개를 닫으시겠습니까?}other{비활성 탭 <ph name="TAB_COUNT_MANY" />개를 닫으시겠습니까?}}</translation> <translation id="4686942373615810936">방금 생성됨</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">스토어 정보 보기, 화면 상단에 옵션 있음</translation> <translation id="5627941783489838464">탭 업데이트 없음</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{탭 복원}other{탭 복원}}</translation> +<translation id="5647702255748985085">그룹에서 나가시겠습니까?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{Chrome 링크 <ph name="TABS_COUNT_ONE" />개}other{Chrome 링크 <ph name="TABS_COUNT_MANY" />개}}</translation> <translation id="58326064309361797">탭을 드래그하여 그룹화하세요.</translation> <translation id="5901630391730855834">노란색</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" /> 선택됨</translation> <translation id="7326879924029668159">반품 정책 등 확인하기</translation> <translation id="7352298686197644113">열려 있는 탭의 상품 중 가격이 더 낮은 상품을 확인합니다.</translation> +<translation id="742664698522525515">그룹을 유지하시겠습니까?</translation> <translation id="7452985128687107478">탭 그룹이 모든 기기에서 자동으로 저장되고 업데이트됩니다.</translation> <translation id="747459581954555080">모두 복원</translation> <translation id="750886945254958667">나중에 탭을 추가하려면 이 그룹을 유지하고, 더 이상 액세스할 필요가 없으면 그룹에서 나가세요.</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">모두 닫기</translation> <translation id="9090098097337832354">매장에 관한 정보가 닫힘</translation> <translation id="9114502155681725011">탭 그룹 <ph name="TITLE_OF_GROUP" />(색상: <ph name="COLOR_NAME" />)의 탭 그룹 작업 메뉴 열기</translation> +<translation id="9169141410816678175">모든 사용자가 '<ph name="GROUP_NAME" />' 탭 그룹에 대한 액세스 권한을 즉시 잃게 되며 탭 그룹이 모든 기기에서 삭제됩니다.</translation> <translation id="9169594135889675189">그룹에 새 탭 추가</translation> <translation id="9216898458513705996">이 기기에서의 탭은 열린 상태로 유지되지만 <ph name="USER_EMAIL" />에 로그인된 모든 기기에서는 그룹이 삭제됩니다.</translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{<ph name="TABS_COUNT_ONE" />개의 <ph name="COLOR_NAME" /> 탭이 포함된 탭 그룹을 펼칩니다.}other{<ph name="TABS_COUNT_MANY" />개의 <ph name="COLOR_NAME" /> 탭이 포함된 탭 그룹을 펼칩니다.}}</translation> +<translation id="94870150074703282">그룹을 삭제하시겠습니까?</translation> <translation id="992256792861109788">분홍색</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_lo.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_lo.xtb index eba13f6..5b7f4556 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_lo.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_lo.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">ກຸ່ມແຖບໃໝ່</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{ປ່ຽນ <ph name="ONE_CHANGED" /> ແຖບ, ປິດ <ph name="ANY_CLOSED" /> ແຖບແລ້ວ}other{ປ່ຽນ <ph name="MANY_CHANGED" /> ແຖບ, ປິດ <ph name="ANY_CLOSED" /> ແຖບແລ້ວ}}</translation> <translation id="4371591986692297148">ບໍ່ໄດ້ນຳໃຊ້</translation> +<translation id="4431937619879060901">ທ່ານຈະສູນເສຍສິດເຂົ້າເຖິງກຸ່ມແຖບ "<ph name="GROUP_NAME" />" ທັນທີ ແລະ ລະບົບຈະລຶບກຸ່ມດັ່ງກ່າວອອກຈາກອຸປະກອນທັງໝົດຂອງທ່ານ</translation> <translation id="4460014764210899310">ຍົກເລີກການຈັດກຸ່ມ</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{ປິດ 1 ແຖບທີ່ບໍ່ໄດ້ນຳໃຊ້ບໍ?}other{ປິດ <ph name="TAB_COUNT_MANY" /> ແຖບທີ່ບໍ່ໄດ້ນຳໃຊ້ບໍ?}}</translation> <translation id="4686942373615810936">ຫາກໍສ້າງຕອນນີ້</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">ເບິ່ງຂໍ້ມູນຮ້ານຄ້າ, ມີຕົວເລືອກຢູ່ເທິງສຸດຂອງໜ້າຈໍ</translation> <translation id="5627941783489838464">ບໍ່ມີການອັບເດດແຖບ</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{ກູ້ຄືນແຖບ}other{ກູ້ຄືນແຖບ}}</translation> +<translation id="5647702255748985085">ອອກຈາກກຸ່ມບໍ?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> ລິ້ງຈາກ Chrome}other{<ph name="TABS_COUNT_MANY" /> ລິ້ງຈາກ Chrome}}</translation> <translation id="58326064309361797">ລາກແຖບເພື່ອຈັດກຸ່ມພວກມັນ</translation> <translation id="5901630391730855834">ສີເຫຼືອງ</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002">ເລືອກ <ph name="COLOR_NAME" /> ແລ້ວ</translation> <translation id="7326879924029668159">ເບິ່ງນະໂຍບາຍການສົ່ງຄືນ ແລະ ອື່ນໆ</translation> <translation id="7352298686197644113">ເບິ່ງວ່າລາຍການໃດໃນແຖບທີ່ເປີດຢູ່ຂອງທ່ານມີລາຄາຕໍ່າກວ່າ</translation> +<translation id="742664698522525515">ເກັບກຸ່ມໄວ້ບໍ?</translation> <translation id="7452985128687107478">ກຸ່ມແຖບຈະບັນທຶກ ແລະ ອັບເດດໃນທຸກອຸປະກອນຂອງທ່ານໂດຍອັດຕະໂນມັດ</translation> <translation id="747459581954555080">ກູ້ຄືນທັງໝົດ</translation> <translation id="750886945254958667">ເກັບກຸ່ມນີ້ໄວ້ເພື່ອເພີ່ມແຖບໃນພາຍຫຼັງ ຫຼື ອອກຈາກກຸ່ມຫາກທ່ານບໍ່ຕ້ອງການເຂົ້າເຖິງກຸ່ມແລ້ວ</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">ປິດທັງໝົດ</translation> <translation id="9090098097337832354">ປິດຂໍ້ມູນກ່ຽວກັບຮ້ານຄ້ານີ້ແລ້ວ</translation> <translation id="9114502155681725011">ເປີດເມນູຄຳສັ່ງຂອງກຸ່ມແຖບສຳລັບກຸ່ມແຖບ <ph name="TITLE_OF_GROUP" />, ສີ <ph name="COLOR_NAME" />.</translation> +<translation id="9169141410816678175">ທຸກຄົນຈະສູນເສຍສິດເຂົ້າເຖິງກຸ່ມແຖບ "<ph name="GROUP_NAME" />" ທັນທີ ແລະ ລະບົບຈະລຶບກຸ່ມດັ່ງກ່າວອອກຈາກອຸປະກອນທັງໝົດ</translation> <translation id="9169594135889675189">ເພີ່ມແຖບໃໝ່ໃສ່ກຸ່ມ</translation> <translation id="9216898458513705996">ແຖບຈະຍັງເປີດຢູ່ໃນອຸປະກອນນີ້ ແຕ່ລະບົບຈະລຶບກຸ່ມອອກຈາກທຸກອຸປະກອນທີ່ເຂົ້າສູ່ລະບົບ <ph name="USER_EMAIL" /></translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{ຂະຫຍາຍກຸ່ມແຖບດ້ວຍ <ph name="TABS_COUNT_ONE" /> ແຖບ, ສີ <ph name="COLOR_NAME" />.}other{ຂະຫຍາຍກຸ່ມແຖບດ້ວຍ <ph name="TABS_COUNT_MANY" /> ແຖບ, ສີ <ph name="COLOR_NAME" />.}}</translation> +<translation id="94870150074703282">ລຶບກຸ່ມບໍ?</translation> <translation id="992256792861109788">ສີບົວ</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ml.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ml.xtb index ff151874..3564904 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ml.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ml.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">പുതിയ ടാബ് ഗ്രൂപ്പ്</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> ടാബ് മാറ്റി, <ph name="ANY_CLOSED" /> എണ്ണം അടച്ചു}other{<ph name="MANY_CHANGED" /> ടാബുകൾ മാറ്റി, <ph name="ANY_CLOSED" /> എണ്ണം അടച്ചു}}</translation> <translation id="4371591986692297148">നിഷ്ക്രിയം</translation> +<translation id="4431937619879060901">നിങ്ങൾക്ക് ഉടൻ തന്നെ "<ph name="GROUP_NAME" />" ടാബ് ഗ്രൂപ്പിലേക്ക് ആക്സസ് നഷ്ടപ്പെടും, അത് നിങ്ങളുടെ എല്ലാ ഉപകരണങ്ങളിൽ നിന്നും ഇല്ലാതാക്കുകയും ചെയ്യും</translation> <translation id="4460014764210899310">ഗ്രൂപ്പ് അല്ലാതാക്കി മാറ്റുക</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{സജീവമല്ലാത്ത ഒരു ടാബ് അടയ്ക്കണോ?}other{സജീവമല്ലാത്ത <ph name="TAB_COUNT_MANY" /> ടാബുകൾ അടയ്ക്കണോ?}}</translation> <translation id="4686942373615810936">ഇപ്പോൾ സൃഷ്ടിച്ചത്</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">സ്റ്റോർ വിവരങ്ങൾ കാണുക, സ്ക്രീനിന്റെ മുകൾ ഭാഗത്തിന് സമീപം ഓപ്ഷൻ ലഭ്യമാണ്</translation> <translation id="5627941783489838464">ടാബ് അപ്ഡേറ്റുകളൊന്നുമില്ല</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{ടാബ് പുനഃസ്ഥാപിക്കുക}other{ടാബുകൾ പുനഃസ്ഥാപിക്കുക}}</translation> +<translation id="5647702255748985085">ഗ്രൂപ്പ് വിടണോ?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{Chrome-ൽ നിന്നുള്ള <ph name="TABS_COUNT_ONE" /> ലിങ്ക്}other{Chrome-ൽ നിന്നുള്ള <ph name="TABS_COUNT_MANY" /> ലിങ്ക്}}</translation> <translation id="58326064309361797">ടാബുകൾ ഗ്രൂപ്പ് ചെയ്യാൻ അവ വലിച്ചിടുക</translation> <translation id="5901630391730855834">മഞ്ഞ</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" /> തിരഞ്ഞെടുത്തു</translation> <translation id="7326879924029668159">മടക്കി നൽകൽ നയവും മറ്റും കാണുക</translation> <translation id="7352298686197644113">തുറന്നിരിക്കുന്ന ടാബുകളിൽ ഏത് ഇനത്തിനാണ് കുറഞ്ഞ വിലയുള്ളതെന്ന് കാണുക</translation> +<translation id="742664698522525515">ഗ്രൂപ്പ് നിലനിർത്തണോ?</translation> <translation id="7452985128687107478">ടാബ് ഗ്രൂപ്പുകൾ നിങ്ങളുടെ ഉപകരണങ്ങളിലുടനീളം സ്വയമേവ സംരക്ഷിച്ച് അപ്ഡേറ്റ് ചെയ്യുന്നു</translation> <translation id="747459581954555080">എല്ലാം പുനഃസ്ഥാപിക്കുക</translation> <translation id="750886945254958667">പിന്നീട് ടാബുകൾ ചേർക്കാൻ ഈ ഗ്രൂപ്പ് നിലനിർത്തുക, അല്ലെങ്കിൽ നിങ്ങൾക്ക് അതിലേക്ക് ആക്സസ് വേണ്ടെങ്കിൽ അതിൽ നിന്ന് പുറത്തുകടക്കുക</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">എല്ലാം അടയ്ക്കുക</translation> <translation id="9090098097337832354">ഈ സ്റ്റോറിനെ കുറിച്ചുള്ള വിവരങ്ങൾ അടച്ചു</translation> <translation id="9114502155681725011"><ph name="TITLE_OF_GROUP" /> എന്ന ടാബ് ഗ്രൂപ്പിനുള്ള, ടാബ് ഗ്രൂപ്പ് പ്രവർത്തന മെനു തുറക്കുക, <ph name="COLOR_NAME" /> നിറം.</translation> +<translation id="9169141410816678175">എല്ലാവർക്കും ഉടൻ തന്നെ "<ph name="GROUP_NAME" />" ടാബ് ഗ്രൂപ്പിലേക്കുള്ള ആക്സസ് നഷ്ടമാകും, അത് എല്ലാ ഉപകരണങ്ങളിൽ നിന്നും ഇല്ലാതാക്കുകയും ചെയ്യും</translation> <translation id="9169594135889675189">ഗ്രൂപ്പിലേക്ക് പുതിയ ടാബ് ചേർക്കുക</translation> <translation id="9216898458513705996">ഈ ഉപകരണത്തിൽ ടാബുകൾ തുറന്നിരിക്കും, എന്നാൽ <ph name="USER_EMAIL" /> എന്നതിലേക്ക് സൈൻ ചെയ്തിരിക്കുന്ന എല്ലാ ഉപകരണങ്ങളിൽ നിന്നും ഗ്രൂപ്പ് ഇല്ലാതാക്കും</translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{<ph name="COLOR_NAME" /> നിറത്തിലുള്ള <ph name="TABS_COUNT_ONE" /> ടാബ് ഉൾപ്പെടുത്തി ടാബ് ഗ്രൂപ്പ് വികസിപ്പിക്കുക.}other{<ph name="COLOR_NAME" /> നിറത്തിലുള്ള <ph name="TABS_COUNT_MANY" /> ടാബുകൾ ഉൾപ്പെടുത്തി ടാബ് ഗ്രൂപ്പ് വികസിപ്പിക്കുക.}}</translation> +<translation id="94870150074703282">ഗ്രൂപ്പ് ഇല്ലാതാക്കണോ?</translation> <translation id="992256792861109788">പിങ്ക്</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_mn.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_mn.xtb index 323f99d..8b97226c 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_mn.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_mn.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Шинэ табын бүлэг</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> табыг өөрчилсөн, <ph name="ANY_CLOSED" />-г хаасан}other{<ph name="MANY_CHANGED" /> табыг өөрчилсөн, <ph name="ANY_CLOSED" />-г хаасан}}</translation> <translation id="4371591986692297148">Идэвхгүй</translation> +<translation id="4431937619879060901">Та "<ph name="GROUP_NAME" />" табын бүлэгт хандах эрхээ тэр даруй алдах ба уг бүлгийг таны бүх төхөөрөмжөөс устгана</translation> <translation id="4460014764210899310">Бүлгийг болих</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{Идэвхгүй 1 табыг хаах уу?}other{Идэвхгүй <ph name="TAB_COUNT_MANY" /> табыг хаах уу?}}</translation> <translation id="4686942373615810936">Дөнгөж сая үүсгэсэн</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Дэлгэцийн дээд хэсгийн ойролцоо боломжтой дэлгүүрийн мэдээллийг үзэх сонголт</translation> <translation id="5627941783489838464">Табын ямар ч шинэчлэлт байхгүй</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Табыг сэргээх}other{Табуудыг сэргээх}}</translation> +<translation id="5647702255748985085">Бүлгээс гарах уу?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{Chrome-н <ph name="TABS_COUNT_ONE" /> холбоос}other{Chrome-н <ph name="TABS_COUNT_MANY" /> холбоос}}</translation> <translation id="58326064309361797">Бүлэглэхийн тулд табыг чирж зөөнө үү</translation> <translation id="5901630391730855834">Шар</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" />-г сонгосон</translation> <translation id="7326879924029668159">Буцаалтын бодлого болон илүү ихийг хараарай</translation> <translation id="7352298686197644113">Таны нээлттэй табд аль зүйл илүү хямд үнэтэй байгааг хараарай</translation> +<translation id="742664698522525515">Бүлгийг үлдээх үү?</translation> <translation id="7452985128687107478">Табын бүлгийг таны бүх төхөөрөмж дээр автоматаар хадгалж, шинэчилдэг</translation> <translation id="747459581954555080">Бүгдийг сэргээх</translation> <translation id="750886945254958667">Дараа таб нэмэхийн тулд энэ бүлгийг үлдээх эсвэл та цаашид уг бүлэгт хандахыг хүсэхгүй байвал гарна уу</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Бүгдийг хаах</translation> <translation id="9090098097337832354">Энэ дэлгүүрийн талаарх мэдээллийг хаасан</translation> <translation id="9114502155681725011">Табын бүлгийн үйлдлийн цэсийг <ph name="COLOR_NAME" /> өнгөтэй, <ph name="TITLE_OF_GROUP" /> табын бүлэгт зориулж нээнэ үү.</translation> +<translation id="9169141410816678175">Хүн бүр "<ph name="GROUP_NAME" />" табын бүлэгт хандах эрхээ тэр даруй алдах бөгөөд үүнийг бүх төхөөрөмжөөс устгана</translation> <translation id="9169594135889675189">Бүлэгт шинэ таб нэмэх</translation> <translation id="9216898458513705996">Таб энэ төхөөрөмж дээр нээлттэй үлдэх хэдий ч бүлгийг <ph name="USER_EMAIL" />-д нэвтэрсэн бүх төхөөрөмжөөс устгана</translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{<ph name="TABS_COUNT_ONE" /> таб, <ph name="COLOR_NAME" /> өнгөтэй табын бүлгийг дэлгэнэ үү.}other{<ph name="TABS_COUNT_MANY" /> таб, <ph name="COLOR_NAME" /> өнгөтэй табын бүлгийг дэлгэнэ үү.}}</translation> +<translation id="94870150074703282">Бүлгийг устгах уу?</translation> <translation id="992256792861109788">Ягаан</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ms.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ms.xtb index 587425c6..83459bb 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ms.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ms.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Kumpulan tab baharu</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> tab ditukar, <ph name="ANY_CLOSED" /> ditutup}other{<ph name="MANY_CHANGED" /> tab ditukar, <ph name="ANY_CLOSED" /> ditutup}}</translation> <translation id="4371591986692297148">Tidak aktif</translation> +<translation id="4431937619879060901">Anda akan kehilangan akses kepada kumpulan tab "<ph name="GROUP_NAME" />" dengan serta-merta dan kumpulan tab ini akan dipadamkan daripada semua peranti anda</translation> <translation id="4460014764210899310">Nyahkumpulan</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{Tutup 1 tab yang tidak aktif?}other{Tutup <ph name="TAB_COUNT_MANY" /> tab yang tidak aktif?}}</translation> <translation id="4686942373615810936">Dibuat sebentar tadi</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Lihat maklumat kedai, pilihan tersedia berhampiran bahagian atas skrin</translation> <translation id="5627941783489838464">Tiada kemaskinian tab</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Pulihkan tab}other{Pulihkan tab}}</translation> +<translation id="5647702255748985085">Tinggalkan kumpulan?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> pautan daripada Chrome}other{<ph name="TABS_COUNT_MANY" /> pautan daripada Chrome}}</translation> <translation id="58326064309361797">Seret tab untuk dihimpunkan</translation> <translation id="5901630391730855834">Kuning</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" /> Dipilih</translation> <translation id="7326879924029668159">Lihat dasar pemulangan dan pelbagai lagi</translation> <translation id="7352298686197644113">Lihat item yang lebih murah dalam tab yang terbuka</translation> +<translation id="742664698522525515">Simpan kumpulan?</translation> <translation id="7452985128687107478">Kumpulan tab disimpan dan dikemaskinikan secara automatik merentas semua peranti anda</translation> <translation id="747459581954555080">Pulihkan semua</translation> <translation id="750886945254958667">Simpan kumpulan ini untuk menambahkan tab kemudian atau keluar daripada kumpulan ini jika anda tidak mahu akses kepada kumpulan ini lagi</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Tutup semua</translation> <translation id="9090098097337832354">Maklumat tentang kedai ini ditutup</translation> <translation id="9114502155681725011">Buka menu tindakan kumpulan tab untuk kumpulan tab <ph name="TITLE_OF_GROUP" />, warna <ph name="COLOR_NAME" />.</translation> +<translation id="9169141410816678175">Semua orang akan kehilangan akses kepada kumpulan tab "<ph name="GROUP_NAME" />" dengan serta-merta dan kumpulan tab ini akan dipadamkan daripada semua peranti</translation> <translation id="9169594135889675189">Tambahkan tab baharu pada kumpulan</translation> <translation id="9216898458513705996">Tab akan kekal terbuka pada peranti ini tetapi kumpulan akan dipadamkan daripada semua peranti yang dilog masuk menggunakan <ph name="USER_EMAIL" /></translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{Kembangkan kumpulan tab dengan <ph name="TABS_COUNT_ONE" /> tab, warna <ph name="COLOR_NAME" />.}other{Kembangkan kumpulan tab dengan <ph name="TABS_COUNT_MANY" /> tab, warna <ph name="COLOR_NAME" />.}}</translation> +<translation id="94870150074703282">Padamkan kumpulan?</translation> <translation id="992256792861109788">Merah Jambu</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_my.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_my.xtb index f48e264..e01a576 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_my.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_my.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">တဘ်အုပ်စုအသစ်</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{တဘ် <ph name="ONE_CHANGED" /> ခု ပြောင်းသွားသည်။ <ph name="ANY_CLOSED" /> ခု ပိတ်လိုက်သည်}other{တဘ် <ph name="MANY_CHANGED" /> ခု ပြောင်းသွားသည်။ <ph name="ANY_CLOSED" /> ခု ပိတ်လိုက်သည်}}</translation> <translation id="4371591986692297148">သုံးမနေပါ</translation> +<translation id="4431937619879060901">သင်သည် “<ph name="GROUP_NAME" />” တဘ်အုပ်စုသုံးခွင့်ကို ချက်ချင်းဆုံးရှုံးမည်ဖြစ်ပြီး ၎င်းကို သင့်စက်အားလုံးမှ ဖျက်ပါမည်</translation> <translation id="4460014764210899310">အုပ်စု ဖွဲ့မထားပါ</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{မသုံးသောတဘ် ၁ ခုကို ပိတ်မလား။}other{မသုံးသောတဘ် <ph name="TAB_COUNT_MANY" /> ခုကို ပိတ်မလား။}}</translation> <translation id="4686942373615810936">ယခုလေးတင် ပြုလုပ်ထားသည်</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">ဆိုင်အချက်အလက် ကြည့်ရန် ရွေးချယ်စရာကို ဖန်သားပြင်ထိပ်ပိုင်းအနီးတွင် ရနိုင်သည်</translation> <translation id="5627941783489838464">တဘ်အပ်ဒိတ် မရှိပါ</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{တဘ် ပြန်ယူရန်}other{တဘ်များ ပြန်ယူရန်}}</translation> +<translation id="5647702255748985085">အဖွဲ့မှ ထွက်မလား။</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{Chrome ထံမှ လင့်ခ် <ph name="TABS_COUNT_ONE" /> ခု}other{Chrome ထံမှ လင့်ခ် <ph name="TABS_COUNT_MANY" /> ခု}}</translation> <translation id="58326064309361797">တဘ်များကို အုပ်စုဖွဲ့ရန် ၎င်းတို့ကို ဖိဆွဲပါ</translation> <translation id="5901630391730855834">အၐါရောင်</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" /> ရွေးထားသည်</translation> <translation id="7326879924029668159">ပြန်ပို့သည့်မူဝါဒနှင့် အခြားအရာများ ကြည့်နိုင်သည်</translation> <translation id="7352298686197644113">သင်ဖွင့်ထားသောတဘ်များတွင် မည်သည့်အရာက ဈေးကျသွားကြောင်း ကြည့်နိုင်သည်</translation> +<translation id="742664698522525515">အုပ်စုကို ဆက်ထားမလား။</translation> <translation id="7452985128687107478">တဘ်အုပ်စုများကို သင့်စက်အားလုံးတွင် အလိုအလျောက်သိမ်းပြီး အပ်ဒိတ်လုပ်ပါသည်</translation> <translation id="747459581954555080">အားလုံး ပြန်လည်သိုလှောင်</translation> <translation id="750886945254958667">တဘ်များကို နောက်မှထည့်ရန် ဤအုပ်စုကို ဆက်ထားနိုင်သည်။ သို့မဟုတ် ၎င်းကို မသုံးလိုတော့ပါက ထွက်နိုင်သည်</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">အားလုံးပိတ်ရန်</translation> <translation id="9090098097337832354">ဤဆိုင် ပိတ်ရသည့်အကြောင်း</translation> <translation id="9114502155681725011"><ph name="TITLE_OF_GROUP" /> တဘ်အုပ်စု၊ <ph name="COLOR_NAME" /> အတွက် တဘ်အုပ်စု လုပ်ဆောင်ချက် မီနူးကို ဖွင့်ရန်။</translation> +<translation id="9169141410816678175">လူတိုင်းသည် “<ph name="GROUP_NAME" />” တဘ်အုပ်စုသုံးခွင့်ကို ချက်ချင်းဆုံးရှုံးမည်ဖြစ်ပြီး ၎င်းကို စက်အားလုံးမှ ဖျက်ပါမည်</translation> <translation id="9169594135889675189">တဘ်အသစ်ကို အုပ်စုသို့ ထည့်ရန်</translation> <translation id="9216898458513705996">တဘ်များကို ဤစက်တွင် ဆက်ဖွင့်ထားမည်ဖြစ်သော်လည်း <ph name="USER_EMAIL" /> သို့ လက်မှတ်ထိုးဝင်ထားသည့် စက်အားလုံးတွင် အုပ်စုကို ဖျက်လိုက်ပါမည်</translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{တဘ် <ph name="TABS_COUNT_ONE" /> ခု၊ <ph name="COLOR_NAME" /> ရောင်ဖြင့် တဘ်အုပ်စုကို ဖြန့်ပါ။}other{တဘ် <ph name="TABS_COUNT_MANY" /> ခု၊ <ph name="COLOR_NAME" /> ရောင်ဖြင့် တဘ်အုပ်စုကို ဖြန့်ပါ။}}</translation> +<translation id="94870150074703282">အုပ်စုကို ဖျက်မလား။</translation> <translation id="992256792861109788">ပန်းရောင်</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_nl.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_nl.xtb index 9f9a4272..3197bd92 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_nl.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_nl.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Nieuwe tabbladgroep</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> tabblad gewijzigd, <ph name="ANY_CLOSED" /> gesloten}other{<ph name="MANY_CHANGED" /> tabbladen gewijzigd, <ph name="ANY_CLOSED" /> gesloten}}</translation> <translation id="4371591986692297148">Inactief</translation> +<translation id="4431937619879060901">Je raakt meteen de toegang tot de tabbladgroep <ph name="GROUP_NAME" /> kwijt en de groep wordt verwijderd van al je apparaten</translation> <translation id="4460014764210899310">Groeperen ongedaan maken</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{1 inactief tabblad sluiten?}other{<ph name="TAB_COUNT_MANY" /> inactieve tabbladen sluiten?}}</translation> <translation id="4686942373615810936">Zojuist gemaakt</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Winkelinformatie bekijken, optie beschikbaar bovenaan het scherm</translation> <translation id="5627941783489838464">Geen tabbladupdates</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Tabblad herstellen}other{Tabbladen herstellen}}</translation> +<translation id="5647702255748985085">Groep verlaten?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> link vanuit Chrome}other{<ph name="TABS_COUNT_MANY" /> links vanuit Chrome}}</translation> <translation id="58326064309361797">Sleep de tabbladen om ze te groeperen</translation> <translation id="5901630391730855834">Geel</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" /> is geselecteerd</translation> <translation id="7326879924029668159">Retourbeleid en meer bekijken</translation> <translation id="7352298686197644113">Bekijk welk item op je geopende tabbladen een lagere prijs heeft</translation> +<translation id="742664698522525515">Groep behouden?</translation> <translation id="7452985128687107478">Tabbladgroepen worden automatisch opgeslagen en geüpdatet op al je apparaten</translation> <translation id="747459581954555080">Alles herstellen</translation> <translation id="750886945254958667">Behoud deze groep om later tabbladen toe te voegen of verlaat de groep als je er geen toegang meer toe wilt</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Alles sluiten</translation> <translation id="9090098097337832354">Informatie over deze winkel gesloten</translation> <translation id="9114502155681725011">Het actiemenu van de tabbladgroep openen voor de tabbladgroep <ph name="TITLE_OF_GROUP" />, kleur <ph name="COLOR_NAME" />.</translation> +<translation id="9169141410816678175">Iedereen raakt meteen de toegang tot de tabbladgroep <ph name="GROUP_NAME" /> kwijt en de groep wordt verwijderd van alle apparaten</translation> <translation id="9169594135889675189">Nieuw tabblad aan groep toevoegen</translation> <translation id="9216898458513705996">De tabbladen blijven geopend op dit apparaat, maar de groep wordt verwijderd van alle apparaten die zijn ingelogd bij <ph name="USER_EMAIL" /></translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{Tabbladgroep met <ph name="TABS_COUNT_ONE" /> tabblad uitvouwen, kleur <ph name="COLOR_NAME" />.}other{Tabbladgroep met <ph name="TABS_COUNT_MANY" /> tabbladen uitvouwen, kleur <ph name="COLOR_NAME" />.}}</translation> +<translation id="94870150074703282">Groep verwijderen?</translation> <translation id="992256792861109788">Roze</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_no.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_no.xtb index 6615a6d..3795b34 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_no.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_no.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Ny fanegruppe</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> fane er endret, <ph name="ANY_CLOSED" /> er lukket}other{<ph name="MANY_CHANGED" /> faner er endret, <ph name="ANY_CLOSED" /> er lukket}}</translation> <translation id="4371591986692297148">Inaktiv</translation> +<translation id="4431937619879060901">Du mister umiddelbart tilgangen til fanegruppen «<ph name="GROUP_NAME" />», og den blir slettet fra alle enhetene dine</translation> <translation id="4460014764210899310">Fjern gruppering</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{Vil du lukke 1 inaktiv fane?}other{Vil du lukke <ph name="TAB_COUNT_MANY" /> inaktive faner?}}</translation> <translation id="4686942373615810936">Opprettet nå nettopp</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Vis butikkinformasjon – alternativet er tilgjengelig nær toppen av skjermen</translation> <translation id="5627941783489838464">Ingen faneoppdateringer</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Gjenopprett fanen}other{Gjenopprett fanene}}</translation> +<translation id="5647702255748985085">Vil du forlate gruppen?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> link fra Chrome}other{<ph name="TABS_COUNT_MANY" /> linker fra Chrome}}</translation> <translation id="58326064309361797">Dra faner for å gruppere dem</translation> <translation id="5901630391730855834">Gul</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" /> er valgt</translation> <translation id="7326879924029668159">Se retningslinjer for retur med mer</translation> <translation id="7352298686197644113">Se hvilken vare i de åpne fanene dine som har en lavere pris</translation> +<translation id="742664698522525515">Vil du beholde gruppen?</translation> <translation id="7452985128687107478">Fanegrupper lagres og oppdateres automatisk på alle enhetene dine</translation> <translation id="747459581954555080">Gjenopprett alt</translation> <translation id="750886945254958667">Behold denne gruppen for å legge til faner senere, eller forlat den hvis du ikke vil ha tilgang til den lenger</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Lukk alle</translation> <translation id="9090098097337832354">Informasjon om denne butikken er lukket</translation> <translation id="9114502155681725011">Åpne handlingsmenyen for fanegruppen <ph name="TITLE_OF_GROUP" /> med fargen <ph name="COLOR_NAME" />.</translation> +<translation id="9169141410816678175">Alle mister tilgangen til fanegruppen «<ph name="GROUP_NAME" />» umiddelbart, og den blir slettet fra alle enheter</translation> <translation id="9169594135889675189">Legg til ny fane i gruppen</translation> <translation id="9216898458513705996">Fanene forblir åpne på denne enheten, men gruppen blir slettet fra alle enheter som er logget på <ph name="USER_EMAIL" /></translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{Vis fanegruppe med <ph name="TABS_COUNT_ONE" /> fane og fargen <ph name="COLOR_NAME" />.}other{Vis fanegruppe med <ph name="TABS_COUNT_MANY" /> faner og fargen <ph name="COLOR_NAME" />.}}</translation> +<translation id="94870150074703282">Vil du slette gruppen?</translation> <translation id="992256792861109788">Rosa</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pa.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pa.xtb index dbe30e1..1a653990 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pa.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_pa.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">ਨਵਾਂ ਟੈਬ ਗਰੁੱਪ</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> ਟੈਬ ਨੂੰ ਬਦਲਿਆ ਗਿਆ, <ph name="ANY_CLOSED" /> ਨੂੰ ਬੰਦ ਕੀਤਾ ਗਿਆ}one{<ph name="MANY_CHANGED" /> ਟੈਬ ਨੂੰ ਬਦਲਿਆ ਗਿਆ, <ph name="ANY_CLOSED" /> ਨੂੰ ਬੰਦ ਕੀਤਾ ਗਿਆ}other{<ph name="MANY_CHANGED" /> ਟੈਬਾਂ ਨੂੰ ਬਦਲਿਆ ਗਿਆ, <ph name="ANY_CLOSED" /> ਨੂੰ ਬੰਦ ਕੀਤਾ ਗਿਆ}}</translation> <translation id="4371591986692297148">ਅਕਿਰਿਆਸ਼ੀਲ</translation> +<translation id="4431937619879060901">ਤੁਸੀਂ "<ph name="GROUP_NAME" />" ਟੈਬ ਗਰੁੱਪ ਤੱਕ ਤੁਰੰਤ ਪਹੁੰਚ ਗੁਆ ਦੇਵੋਗੇ ਅਤੇ ਇਸ ਨੂੰ ਤੁਹਾਡੇ ਸਾਰੇ ਡੀਵਾਈਸਾਂ ਤੋਂ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ</translation> <translation id="4460014764210899310">ਗਰੁੱਪ ਹਟਾਓ</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{ਕੀ 1 ਅਕਿਰਿਆਸ਼ੀਲ ਟੈਬ ਨੂੰ ਬੰਦ ਕਰਨਾ ਹੈ?}one{ਕੀ <ph name="TAB_COUNT_MANY" /> ਅਕਿਰਿਆਸ਼ੀਲ ਟੈਬ ਨੂੰ ਬੰਦ ਕਰਨਾ ਹੈ?}other{ਕੀ <ph name="TAB_COUNT_MANY" /> ਅਕਿਰਿਆਸ਼ੀਲ ਟੈਬਾਂ ਨੂੰ ਬੰਦ ਕਰਨਾ ਹੈ?}}</translation> <translation id="4686942373615810936">ਹੁਣੇ ਬਣਾਇਆ ਗਿਆ</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">ਸਟੋਰ ਦੀ ਜਾਣਕਾਰੀ ਦੇਖੋ, ਇਹ ਵਿਕਲਪ ਸਕ੍ਰੀਨ ਦੇ ਸਿਖਰ ਦੇ ਨੇੜੇ ਉਪਲਬਧ ਹੈ</translation> <translation id="5627941783489838464">ਕੋਈ ਟੈਬ ਅੱਪਡੇਟ ਨਹੀਂ</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{ਟੈਬ ਮੁੜ-ਬਹਾਲ ਕਰੋ}one{ਟੈਬ ਮੁੜ-ਬਹਾਲ ਕਰੋ}other{ਟੈਬਾਂ ਮੁੜ-ਬਹਾਲ ਕਰੋ}}</translation> +<translation id="5647702255748985085">ਕੀ ਗਰੁੱਪ ਨੂੰ ਛੱਡਣਾ ਹੈ?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{Chrome ਤੋਂ <ph name="TABS_COUNT_ONE" /> ਲਿੰਕ}one{Chrome ਤੋਂ <ph name="TABS_COUNT_MANY" /> ਲਿੰਕ}other{Chrome ਤੋਂ <ph name="TABS_COUNT_MANY" /> ਲਿੰਕ}}</translation> <translation id="58326064309361797">ਟੈਬਾਂ ਨੂੰ ਇਕੱਠਾ ਕਰਨ ਲਈ ਉਹਨਾਂ ਨੂੰ ਘਸੀਟੋ</translation> <translation id="5901630391730855834">ਪੀਲਾ</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" /> ਨੂੰ ਚੁਣਿਆ ਗਿਆ</translation> <translation id="7326879924029668159">ਵਾਪਸੀ ਸੰਬੰਧੀ ਨੀਤੀ ਅਤੇ ਹੋਰ ਚੀਜ਼ਾਂ ਦੇਖੋ</translation> <translation id="7352298686197644113">ਦੇਖੋ ਕਿ ਤੁਹਾਡੇ ਖੁੱਲ੍ਹੇ ਟੈਬਾਂ ਵਿੱਚ ਕਿਹੜੀ ਆਈਟਮ ਦੀ ਕੀਮਤ ਘੱਟ ਹੈ</translation> +<translation id="742664698522525515">ਕੀ ਗਰੁੱਪ ਨੂੰ ਰੱਖਣਾ ਹੈ?</translation> <translation id="7452985128687107478">ਟੈਬ ਗਰੁੱਪ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਤੁਹਾਡੇ ਸਾਰੇ ਡੀਵਾਈਸਾਂ 'ਤੇ ਰੱਖਿਅਤ ਅਤੇ ਅੱਪਡੇਟ ਹੁੰਦੇ ਹਨ</translation> <translation id="747459581954555080">ਸਾਰੇ ਰੀਸਟੋਰ ਕਰੋ</translation> <translation id="750886945254958667">ਬਾਅਦ ਵਿੱਚ ਟੈਬਾਂ ਸ਼ਾਮਲ ਕਰਨ ਲਈ, ਇਸ ਗਰੁੱਪ ਨੂੰ ਬਣਾਈ ਰੱਖੋ ਜਾਂ ਜੇ ਤੁਸੀਂ ਹੁਣ ਇਸ ਤੱਕ ਪਹੁੰਚ ਨਹੀਂ ਕਰਨਾ ਚਾਹੁੰਦੇ, ਤਾਂ ਇਸ ਨੂੰ ਛੱਡੋ</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">ਸਭ ਬੰਦ ਕਰੋ</translation> <translation id="9090098097337832354">ਇਸ ਸਟੋਰ ਸੰਬੰਧੀ ਜਾਣਕਾਰੀ ਵਾਲੀ ਸਕ੍ਰੀਨ ਬੰਦ ਹੋ ਗਈ ਹੈ</translation> <translation id="9114502155681725011">ਟੈਬ ਗਰੁੱਪ <ph name="TITLE_OF_GROUP" />, ਰੰਗ <ph name="COLOR_NAME" /> ਲਈ, ਟੈਬ ਗਰੁੱਪ ਕਾਰਵਾਈ ਮੀਨੂ ਖੋਲ੍ਹੋ।</translation> +<translation id="9169141410816678175">ਹਰ ਕੋਈ "<ph name="GROUP_NAME" />" ਟੈਬ ਗਰੁੱਪ ਤੱਕ ਤੁਰੰਤ ਪਹੁੰਚ ਗੁਆ ਦੇਵੇਗਾ ਅਤੇ ਇਸ ਨੂੰ ਸਾਰੇ ਡੀਵਾਈਸਾਂ ਤੋਂ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ</translation> <translation id="9169594135889675189">ਗਰੁੱਪ ਵਿੱਚ ਨਵੀਂ ਟੈਬ ਸ਼ਾਮਲ ਕਰੋ</translation> <translation id="9216898458513705996">ਟੈਬਾਂ ਇਸ ਡੀਵਾਈਸ 'ਤੇ ਖੁੱਲ੍ਹੀਆਂ ਰਹਿਣਗੀਆਂ ਪਰ <ph name="USER_EMAIL" /> ਵਿੱਚ ਸਾਈਨ-ਇਨ ਕੀਤੇ ਸਾਰੇ ਡੀਵਾਈਸਾਂ ਤੋਂ ਗਰੁੱਪ ਨੂੰ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ</translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{<ph name="COLOR_NAME" /> ਰੰਗ ਅਤੇ <ph name="TABS_COUNT_ONE" /> ਟੈਬ ਵਾਲੇ ਟੈਬ ਗਰੁੱਪ ਦਾ ਵਿਸਤਾਰ ਕਰੋ।}one{<ph name="COLOR_NAME" /> ਰੰਗ ਅਤੇ <ph name="TABS_COUNT_MANY" /> ਟੈਬ ਵਾਲੇ ਟੈਬ ਗਰੁੱਪ ਦਾ ਵਿਸਤਾਰ ਕਰੋ।}other{<ph name="COLOR_NAME" /> ਰੰਗ ਅਤੇ <ph name="TABS_COUNT_MANY" /> ਟੈਬਾਂ ਵਾਲੇ ਟੈਬ ਗਰੁੱਪ ਦਾ ਵਿਸਤਾਰ ਕਰੋ।}}</translation> +<translation id="94870150074703282">ਕੀ ਗਰੁੱਪ ਮਿਟਾਉਣਾ ਹੈ?</translation> <translation id="992256792861109788">ਗੁਲਾਬੀ</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ru.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ru.xtb index 2adc281..44681eb 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ru.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_ru.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Новая группа вкладок</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{Вкладок изменено: <ph name="ONE_CHANGED" />, закрыто: <ph name="ANY_CLOSED" />.}one{Вкладок изменено: <ph name="MANY_CHANGED" />, закрыто: <ph name="ANY_CLOSED" />.}few{Вкладок изменено: <ph name="MANY_CHANGED" />, закрыто: <ph name="ANY_CLOSED" />.}many{Вкладок изменено: <ph name="MANY_CHANGED" />, закрыто: <ph name="ANY_CLOSED" />.}other{Вкладок изменено: <ph name="MANY_CHANGED" />, закрыто: <ph name="ANY_CLOSED" />.}}</translation> <translation id="4371591986692297148">неактивно</translation> +<translation id="4431937619879060901">Группа вкладок "<ph name="GROUP_NAME" />" сразу станет вам недоступна и будет удалена со всех ваших устройств.</translation> <translation id="4460014764210899310">Разгруппировать</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{Закрыть 1 неактивную вкладку?}one{Закрыть <ph name="TAB_COUNT_MANY" /> неактивную вкладку?}few{Закрыть <ph name="TAB_COUNT_MANY" /> неактивные вкладки?}many{Закрыть <ph name="TAB_COUNT_MANY" /> неактивных вкладок?}other{Закрыть <ph name="TAB_COUNT_MANY" /> неактивной вкладки?}}</translation> <translation id="4686942373615810936">Создано только что</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Просмотр сведений о магазине, параметр вверху экрана</translation> <translation id="5627941783489838464">Нет изменений вкладок.</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Восстановить вкладку}one{Восстановить вкладки}few{Восстановить вкладки}many{Восстановить вкладки}other{Восстановить вкладки}}</translation> +<translation id="5647702255748985085">Покинуть группу?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> ссылка из Chrome}one{<ph name="TABS_COUNT_MANY" /> ссылка из Chrome}few{<ph name="TABS_COUNT_MANY" /> ссылки из Chrome}many{<ph name="TABS_COUNT_MANY" /> ссылок из Chrome}other{<ph name="TABS_COUNT_MANY" /> ссылки из Chrome}}</translation> <translation id="58326064309361797">Перетаскивайте вкладки, чтобы группировать их</translation> <translation id="5901630391730855834">Желтый</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002">Цвет "<ph name="COLOR_NAME" />" выбран</translation> <translation id="7326879924029668159">Правила возврата и другая информация</translation> <translation id="7352298686197644113">Узнайте, какой из товаров на открытых вкладках стал дешевле.</translation> +<translation id="742664698522525515">Оставить группу?</translation> <translation id="7452985128687107478">Группы вкладок автоматически сохраняются и обновляются на всех ваших устройствах.</translation> <translation id="747459581954555080">Восстановить все</translation> <translation id="750886945254958667">Вы сможете пользоваться ей в дальнейшем и добавлять вкладки. Если группа больше не нужна, выйдите из нее.</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Закрыть все</translation> <translation id="9090098097337832354">Информация об этом магазине закрыта</translation> <translation id="9114502155681725011">Открыть меню действий для группы вкладок "<ph name="TITLE_OF_GROUP" />", которой присвоен цвет "<ph name="COLOR_NAME" />".</translation> +<translation id="9169141410816678175">Группа вкладок "<ph name="GROUP_NAME" />" сразу станет всем недоступна и будет удалена с каждого устройства.</translation> <translation id="9169594135889675189">Добавить новую вкладку в группу</translation> <translation id="9216898458513705996">Хотя здесь вкладки останутся открытыми, группа будет удалена на всех устройствах, на которых выполнен вход в аккаунт <ph name="USER_EMAIL" />.</translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{Развернуть группу вкладок, которой присвоен <ph name="COLOR_NAME" /> цвет. В ней <ph name="TABS_COUNT_ONE" /> вкладка.}one{Развернуть группу вкладок, которой присвоен <ph name="COLOR_NAME" /> цвет. В ней <ph name="TABS_COUNT_MANY" /> вкладка.}few{Развернуть группу вкладок, которой присвоен <ph name="COLOR_NAME" /> цвет. В ней <ph name="TABS_COUNT_MANY" /> вкладки.}many{Развернуть группу вкладок, которой присвоен <ph name="COLOR_NAME" /> цвет. В ней <ph name="TABS_COUNT_MANY" /> вкладок.}other{Развернуть группу вкладок, которой присвоен <ph name="COLOR_NAME" /> цвет. В ней <ph name="TABS_COUNT_MANY" /> вкладки.}}</translation> +<translation id="94870150074703282">Удалить группу?</translation> <translation id="992256792861109788">Розовый</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sk.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sk.xtb index c7c02876..b88b32d 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sk.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sk.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Nová skupina kariet</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> karta bola zmenená, zavreté: <ph name="ANY_CLOSED" />}few{<ph name="MANY_CHANGED" /> karty boli zmenené, zavreté: <ph name="ANY_CLOSED" />}many{<ph name="MANY_CHANGED" /> tabs changed, <ph name="ANY_CLOSED" /> closed}other{<ph name="MANY_CHANGED" /> kariet bolo zmenených, zavreté: <ph name="ANY_CLOSED" />}}</translation> <translation id="4371591986692297148">Neaktívne</translation> +<translation id="4431937619879060901">Okamžite stratíte prístup ku skupine kariet <ph name="GROUP_NAME" />, ktorá bude odstránená zo všetkých vašich zariadení</translation> <translation id="4460014764210899310">Zrušiť zoskupenie</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{Chcete zavrieť 1 neaktívnu kartu?}few{Chcete zavrieť <ph name="TAB_COUNT_MANY" /> neaktívne karty?}many{Close <ph name="TAB_COUNT_MANY" /> inactive tabs?}other{Chcete zavrieť <ph name="TAB_COUNT_MANY" /> neaktívnych kariet?}}</translation> <translation id="4686942373615810936">Vytvorená práve teraz</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Zobraziť informácie o obchode, možnosť je k dispozícii v dolnej časti obrazovky</translation> <translation id="5627941783489838464">Žiadne aktualizácie kariet</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Obnoviť kartu}few{Obnoviť karty}many{Restore tabs}other{Obnoviť karty}}</translation> +<translation id="5647702255748985085">Chcete skupinu opustiť?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> odkaz z Chromu}few{<ph name="TABS_COUNT_MANY" /> odkazy z Chromu}many{<ph name="TABS_COUNT_MANY" /> links from Chrome}other{<ph name="TABS_COUNT_MANY" /> odkazov z Chromu}}</translation> <translation id="58326064309361797">Karty zoskupíte presunutím</translation> <translation id="5901630391730855834">Žltá</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" />, vybrané</translation> <translation id="7326879924029668159">Prečítajte si pravidlá vrátenia tovaru a ďalšie dokumenty</translation> <translation id="7352298686197644113">Zistite, ktorá položka na vašich otvorených kartách má nižšiu cenu</translation> +<translation id="742664698522525515">Chcete skupinu ponechať?</translation> <translation id="7452985128687107478">Skupiny kariet sa automaticky ukladajú a aktualizujú vo všetkých vašich zariadeniach</translation> <translation id="747459581954555080">Obnoviť všetko</translation> <translation id="750886945254958667">Ponechajte si túto skupinu, aby ste mohli neskôr pridať karty, alebo ju opustite, keď už k nej nechcete mať prístup</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Zavrieť všetko</translation> <translation id="9090098097337832354">Informácie o tomto obchode boli zavreté</translation> <translation id="9114502155681725011">Otvorte ponuku akcií skupiny kariet <ph name="TITLE_OF_GROUP" /> vo farbe <ph name="COLOR_NAME" />.</translation> +<translation id="9169141410816678175">Všetci okamžite stratia prístup ku skupine kariet <ph name="GROUP_NAME" />, ktorá bude odstránená zo všetkých zariadení</translation> <translation id="9169594135889675189">Pridať novú kartu do skupiny</translation> <translation id="9216898458513705996">Karty zostanú v tomto zariadení otvorené, ale skupina bude odstránená zo všetkých zariadení prihlásených do účtu <ph name="USER_EMAIL" /></translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{Rozbaľte skupinu kariet vo farbe <ph name="COLOR_NAME" /> s <ph name="TABS_COUNT_ONE" /> kartou.}few{Rozbaľte skupinu kariet vo farbe <ph name="COLOR_NAME" /> s <ph name="TABS_COUNT_MANY" /> kartami.}many{Expand tab group with <ph name="TABS_COUNT_MANY" /> tabs, color <ph name="COLOR_NAME" />.}other{Rozbaľte skupinu kariet vo farbe <ph name="COLOR_NAME" /> s <ph name="TABS_COUNT_MANY" /> kartami.}}</translation> +<translation id="94870150074703282">Chcete skupinu odstrániť?</translation> <translation id="992256792861109788">Ružová</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sl.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sl.xtb index c2414b564368..1fdb7c5 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sl.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sl.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Nova skupina zavihkov</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> zavihek je spremenjen, zaprtih: <ph name="ANY_CLOSED" />}one{<ph name="MANY_CHANGED" /> zavihek je spremenjen, zaprtih: <ph name="ANY_CLOSED" />}two{<ph name="MANY_CHANGED" /> zavihka sta spremenjena zaprtih: <ph name="ANY_CLOSED" />}few{<ph name="MANY_CHANGED" /> zavihki so spremenjeni, zaprtih: <ph name="ANY_CLOSED" />}other{<ph name="MANY_CHANGED" /> zavihkov je spremenjenih, zaprtih: <ph name="ANY_CLOSED" />}}</translation> <translation id="4371591986692297148">Neaktivno</translation> +<translation id="4431937619879060901">Takoj boste izgubili dostop do skupine zavihkov »<ph name="GROUP_NAME" />« in izbrisana bo iz vseh vaših naprav</translation> <translation id="4460014764210899310">Razdruži</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{Želite zapreti 1 neaktiven zavihek?}one{Želite zapreti <ph name="TAB_COUNT_MANY" /> neaktiven zavihek?}two{Želite zapreti <ph name="TAB_COUNT_MANY" /> neaktivna zavihka?}few{Želite zapreti <ph name="TAB_COUNT_MANY" /> neaktivne zavihke?}other{Želite zapreti <ph name="TAB_COUNT_MANY" /> neaktivnih zavihkov?}}</translation> <translation id="4686942373615810936">Ustvarjeno pravkar</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Ogled podatkov o trgovini, možnosti so na voljo pri vrhu zaslona</translation> <translation id="5627941783489838464">Ni posodobitev zavihkov</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Obnovi zavihek}one{Obnovi zavihke}two{Obnovi zavihke}few{Obnovi zavihke}other{Obnovi zavihke}}</translation> +<translation id="5647702255748985085">Želite zapustiti skupino?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> povezava iz Chroma}one{<ph name="TABS_COUNT_MANY" /> povezava iz Chroma}two{<ph name="TABS_COUNT_MANY" /> povezavi iz Chroma}few{<ph name="TABS_COUNT_MANY" /> povezave iz Chroma}other{<ph name="TABS_COUNT_MANY" /> povezav iz Chroma}}</translation> <translation id="58326064309361797">Povlecite zavihke, če jih želite združiti v skupino</translation> <translation id="5901630391730855834">Rumena</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002">Izbrano: <ph name="COLOR_NAME" /></translation> <translation id="7326879924029668159">Oglejte si pravilnik o vračilih in drugo.</translation> <translation id="7352298686197644113">Oglejte si, kateri izdelek na odprtih zavihkih ima nižjo ceno.</translation> +<translation id="742664698522525515">Želite ohraniti skupino?</translation> <translation id="7452985128687107478">Skupine zavihkov se samodejno shranjujejo in posodabljajo v vseh napravah</translation> <translation id="747459581954555080">Obnovi vse</translation> <translation id="750886945254958667">Ohranite to skupino, če želite pozneje dodati zavihke, ali jo zapustite, če ne želite več dostopati do nje</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Zapri vse</translation> <translation id="9090098097337832354">Informacije o tej trgovini so zaprte.</translation> <translation id="9114502155681725011">Odpiranje menija z dejanji za skupino zavihkov <ph name="TITLE_OF_GROUP" /> barve <ph name="COLOR_NAME" />.</translation> +<translation id="9169141410816678175">Vsi bodo takoj izgubili dostop do skupine zavihkov »<ph name="GROUP_NAME" />« in izbrisana bo iz vseh naprav</translation> <translation id="9169594135889675189">Skupini dodaj nov zavihek</translation> <translation id="9216898458513705996">Zavihki bodo ostali odprti v tej napravi, vendar bo skupina izbrisana iz vseh naprav, v katerih ste prijavljeni v račun <ph name="USER_EMAIL" /></translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{Razširitev skupine zavihkov z <ph name="TABS_COUNT_ONE" /> zavihkom, barva: <ph name="COLOR_NAME" />.}one{Razširitev skupine zavihkov z/s <ph name="TABS_COUNT_MANY" /> zavihkom, barva: <ph name="COLOR_NAME" />.}two{Razširitev skupine zavihkov z <ph name="TABS_COUNT_MANY" /> zavihkoma, barva: <ph name="COLOR_NAME" />.}few{Razširitev skupine zavihkov s/z <ph name="TABS_COUNT_MANY" /> zavihki, barva: <ph name="COLOR_NAME" />.}other{Razširitev skupine zavihkov s/z <ph name="TABS_COUNT_MANY" /> zavihki, barva: <ph name="COLOR_NAME" />.}}</translation> +<translation id="94870150074703282">Želite izbrisati skupino?</translation> <translation id="992256792861109788">Rožnata</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sv.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sv.xtb index 4417020d..ec9da5a 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sv.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sv.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Ny flikgrupp</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> flik har ändrats, <ph name="ANY_CLOSED" /> har stängts}other{<ph name="MANY_CHANGED" /> flikar har ändrats, <ph name="ANY_CLOSED" /> har stängts}}</translation> <translation id="4371591986692297148">Inaktiv</translation> +<translation id="4431937619879060901">Du förlorar omedelbart åtkomst till flikgruppen <ph name="GROUP_NAME" /> och den raderas från alla dina enheter</translation> <translation id="4460014764210899310">Ta bort gruppering</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{Vill du stänga 1 inaktiv flik?}other{Vill du stänga <ph name="TAB_COUNT_MANY" /> inaktiv flik?}}</translation> <translation id="4686942373615810936">Skapades just nu</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Visa butiksinformation. Alternativet visas högt upp på skärmen</translation> <translation id="5627941783489838464">Inga flikuppdateringar</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Återställ flik}other{Återställ flikar}}</translation> +<translation id="5647702255748985085">Vill du lämna gruppen?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> länk från Chrome}other{<ph name="TABS_COUNT_MANY" /> länkar från Chrome}}</translation> <translation id="58326064309361797">Gruppera flikar genom att dra dem</translation> <translation id="5901630391730855834">Gul</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" /> har valts</translation> <translation id="7326879924029668159">Se returpolicy med mera</translation> <translation id="7352298686197644113">Se vilket objekt på dina öppna flikar som har ett lägre pris</translation> +<translation id="742664698522525515">Vill du behålla gruppen?</translation> <translation id="7452985128687107478">Flikgrupper sparas och uppdateras automatiskt på alla dina enheter</translation> <translation id="747459581954555080">Återställ alla</translation> <translation id="750886945254958667">Behåll gruppen om du vill lägga till flikar senare eller lämna den om du inte längre vill ha åtkomst till den</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Stäng alla</translation> <translation id="9090098097337832354">Informationen om den här butiken stängdes</translation> <translation id="9114502155681725011">Öppna åtgärdsmenyn för flikgruppen <ph name="TITLE_OF_GROUP" /> med färgen <ph name="COLOR_NAME" /></translation> +<translation id="9169141410816678175">Alla förlorar omedelbart åtkomst till flikgruppen <ph name="GROUP_NAME" /> och den raderas från alla enheter</translation> <translation id="9169594135889675189">Lägg till ny flik i gruppen</translation> <translation id="9216898458513705996">Flikarna förblir öppna på den här enheten men gruppen raderas från alla enheter där du är inloggad på <ph name="USER_EMAIL" /></translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{Utöka flikgruppen med <ph name="TABS_COUNT_ONE" /> flik, färgen <ph name="COLOR_NAME" />.}other{Utöka flikgruppen med <ph name="TABS_COUNT_MANY" /> flikar, färgen <ph name="COLOR_NAME" />.}}</translation> +<translation id="94870150074703282">Vill du ta bort gruppen?</translation> <translation id="992256792861109788">Rosa</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sw.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sw.xtb index eb0407dc..4ecaa32 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sw.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_sw.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Kikundi kipya cha vichupo</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{Kichupo <ph name="ONE_CHANGED" /> kimebadilishwa, <ph name="ANY_CLOSED" /> vimefungwa}other{Vichupo <ph name="MANY_CHANGED" /> vimebadilishwa, <ph name="ANY_CLOSED" /> vimefungwa}}</translation> <translation id="4371591986692297148">Haitumiki</translation> +<translation id="4431937619879060901">Utapoteza papo hapo uwezo wa kufikia kikundi cha vichupo cha “<ph name="GROUP_NAME" />” na kitafutwa kwenye vifaa vyako vyote</translation> <translation id="4460014764210899310">Ondoa kwenye kundi</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{Ungependa kufunga kichupo 1 kisichotumika?}other{Ungependa kufunga vichupo <ph name="TAB_COUNT_MANY" /> visivyotumika?}}</translation> <translation id="4686942373615810936">Kimeundwa sasa hivi</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Angalia maelezo ya duka, chaguo hili linapatikana karibu na sehemu ya juu ya skrini</translation> <translation id="5627941783489838464">Hakuna masasisho ya vichupo</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Rejesha kichupo}other{Rejesha vichupo}}</translation> +<translation id="5647702255748985085">Ungependa kuondoka kwenye kikundi?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{Kiungo <ph name="TABS_COUNT_ONE" /> kutoka Chrome}other{Viungo <ph name="TABS_COUNT_MANY" /> kutoka Chrome}}</translation> <translation id="58326064309361797">Buruta vichupo ili uviweke katika kikundi</translation> <translation id="5901630391730855834">Manjano</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002">Umechagua <ph name="COLOR_NAME" /></translation> <translation id="7326879924029668159">Angalia sera ya kurejesha bidhaa na mengine</translation> <translation id="7352298686197644113">Angalia bidhaa iliyo na bei nafuu katika vichupo ulivyovifungua</translation> +<translation id="742664698522525515">Ungependa kuhifadhi kikundi?</translation> <translation id="7452985128687107478">Vikundi vya vichupo huhifadhiwa na kusasishwa kiotomatiki kwenye vifaa vyako vyote</translation> <translation id="747459581954555080">Rejesha zote</translation> <translation id="750886945254958667">Hifadhi kikundi hiki ili uweke vichupo baadaye au uondoke iwapo hungependa tena kukifikia</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Funga vyote</translation> <translation id="9090098097337832354">Maelezo kuhusu duka hili yamefungwa</translation> <translation id="9114502155681725011">Fungua menyu ya vitendo ya kikundi cha vichupo cha <ph name="TITLE_OF_GROUP" />, rangi <ph name="COLOR_NAME" />.</translation> +<translation id="9169141410816678175">Kila mtu atapoteza papo hapo uwezo wa kufikia kikundi cha vichupo cha “<ph name="GROUP_NAME" />” na kitafutwa kwenye vifaa vyote</translation> <translation id="9169594135889675189">Ongeza kichupo kipya kwenye kikundi</translation> <translation id="9216898458513705996">Vichupo havitafungwa kwenye kifaa hiki lakini kikundi kitafutwa kwenye vifaa vyote ulivyotumia kuingia katika akaunti ya <ph name="USER_EMAIL" /></translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{Panua kikundi cha vichupo chenye kichupo <ph name="TABS_COUNT_ONE" />, cha rangi ya <ph name="COLOR_NAME" />.}other{Panua kikundi cha vichupo chenye vichupo <ph name="TABS_COUNT_MANY" />, vya rangi ya <ph name="COLOR_NAME" />.}}</translation> +<translation id="94870150074703282">Ungependa kufuta kikundi?</translation> <translation id="992256792861109788">Waridi</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_uz.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_uz.xtb index 755291fa..05d0984 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_uz.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_uz.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">Yangi varaqlar guruhi</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> ta varaq oʻzgardi, <ph name="ANY_CLOSED" /> tasi yopildi}other{<ph name="MANY_CHANGED" /> ta varaq oʻzgardi, <ph name="ANY_CLOSED" /> tasi yopildi}}</translation> <translation id="4371591986692297148">Nofaol</translation> +<translation id="4431937619879060901">“<ph name="GROUP_NAME" />” varaqlar guruhiga ruxsat darhol yopiladi va barcha qurilmalardan oʻchiriladi</translation> <translation id="4460014764210899310">Guruhni bekor qilish</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{1 ta nofaol varaq yopilsinmi?}other{<ph name="TAB_COUNT_MANY" /> ta nofaol varaq yopilsinmi?}}</translation> <translation id="4686942373615810936">Hozirgina yaratildi</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">Doʻkon axboroti ekranning yuqori qismida chiqadi</translation> <translation id="5627941783489838464">Varaqlar oʻzgamagan</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{Varaqni tiklash}other{Varaqlarni tiklash}}</translation> +<translation id="5647702255748985085">Guruh chatini tark etmoqchimisiz?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{Chrome brauzeridan <ph name="TABS_COUNT_ONE" /> ta havola}other{Chrome brauzeridan <ph name="TABS_COUNT_MANY" /> ta havola}}</translation> <translation id="58326064309361797">Varaqlarni guruhlash uchun bir-birining ustiga torting</translation> <translation id="5901630391730855834">Sariq</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002"><ph name="COLOR_NAME" /> tanlangan</translation> <translation id="7326879924029668159">Qaytarish siyosati va boshqalar</translation> <translation id="7352298686197644113">Ochiq varaqlardagi qaysi narsalar narxi arzonlaganini bilish</translation> +<translation id="742664698522525515">Guruh qolsinmi?</translation> <translation id="7452985128687107478">Varaqlar guruhi barcha qurilmalarda avtomatik saqlanadi va yangilanib turadi</translation> <translation id="747459581954555080">Barchasini qayta tiklash</translation> <translation id="750886945254958667">Undan foydalanish va unga varaqlar kiritish mumkin. Guruh kerak boʻlmasa, uni tark eting.</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">Hammasini yopish</translation> <translation id="9090098097337832354">Bu doʻkon haqidagi axborot yopildi</translation> <translation id="9114502155681725011"><ph name="COLOR_NAME" /> rangli <ph name="TITLE_OF_GROUP" /> varaqlar guruhi uchun amallar menyusini ochish</translation> +<translation id="9169141410816678175">“<ph name="GROUP_NAME" />” varaqlar guruhi hammada ishlamay qoladi va barcha qurilmalardan oʻchiriladi</translation> <translation id="9169594135889675189">Guruhga yangi varaq kiritish</translation> <translation id="9216898458513705996">Varaqlar bu qurilmada ochiq qoladi, ammo guruh <ph name="USER_EMAIL" /> hisobidan kirilgan barcha qurilmalardan oʻchirib tashlanadi</translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{Varaqlar guruhini yoyish, varaqlari: <ph name="TABS_COUNT_ONE" /> ta, rangi: <ph name="COLOR_NAME" />.}other{Varaqlar guruhini yoyish, varaqlari: <ph name="TABS_COUNT_MANY" /> ta, rangi: <ph name="COLOR_NAME" />.}}</translation> +<translation id="94870150074703282">Guruh oʻchirilsinmi?</translation> <translation id="992256792861109788">Pushti</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-CN.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-CN.xtb index f68e294b..0a1af32 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-CN.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-CN.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">新标签页分组</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{已更改 <ph name="ONE_CHANGED" /> 个标签页,已关闭 <ph name="ANY_CLOSED" /> 个标签页}other{已更改 <ph name="MANY_CHANGED" /> 个标签页,已关闭 <ph name="ANY_CLOSED" /> 个标签页}}</translation> <translation id="4371591986692297148">已停用</translation> +<translation id="4431937619879060901">您将立即失去对标签页分组“<ph name="GROUP_NAME" />”的访问权限,并且该分组将从您的所有设备中删除</translation> <translation id="4460014764210899310">取消分组</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{要关闭 1 个闲置标签页吗?}other{要关闭 <ph name="TAB_COUNT_MANY" /> 个闲置标签页吗?}}</translation> <translation id="4686942373615810936">创建时间:刚刚</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">查看商店信息,屏幕顶部附近有可用选项</translation> <translation id="5627941783489838464">无标签页更新</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{恢复标签页}other{恢复标签页}}</translation> +<translation id="5647702255748985085">退出分组?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{Chrome 中的 <ph name="TABS_COUNT_ONE" /> 个链接}other{Chrome 中的 <ph name="TABS_COUNT_MANY" /> 个链接}}</translation> <translation id="58326064309361797">拖动标签可进行分组</translation> <translation id="5901630391730855834">黄色</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002">已选中<ph name="COLOR_NAME" /></translation> <translation id="7326879924029668159">查看退货政策及其他信息</translation> <translation id="7352298686197644113">查看您打开的标签页中哪件商品降价了</translation> +<translation id="742664698522525515">保留分组?</translation> <translation id="7452985128687107478">标签页分组会自动保存并在您的所有设备上更新</translation> <translation id="747459581954555080">全部恢复</translation> <translation id="750886945254958667">您可以保留此分组,以便日后添加标签页;如果不再想访问它,也可以退出分组</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">全部关闭</translation> <translation id="9090098097337832354">此商店的相关信息已关闭</translation> <translation id="9114502155681725011">打开标签页分组“<ph name="TITLE_OF_GROUP" />”(颜色为<ph name="COLOR_NAME" />)的操作菜单。</translation> +<translation id="9169141410816678175">所有人将立即失去对标签页分组“<ph name="GROUP_NAME" />”的访问权限,并且该分组将从所有设备中删除</translation> <translation id="9169594135889675189">向组中添加新标签页</translation> <translation id="9216898458513705996">相应标签页将在此设备上保持打开状态,但系统会从所有已登录 <ph name="USER_EMAIL" /> 的设备中删除该分组</translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{展开包含 <ph name="TABS_COUNT_ONE" /> 个标签页的标签页分组,颜色为<ph name="COLOR_NAME" />。}other{展开包含 <ph name="TABS_COUNT_MANY" /> 个标签页的标签页分组,颜色为<ph name="COLOR_NAME" />。}}</translation> +<translation id="94870150074703282">删除分组?</translation> <translation id="992256792861109788">粉色</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-HK.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-HK.xtb index 2bd232f..07b2930 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-HK.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-HK.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">新分頁群組</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{<ph name="ONE_CHANGED" /> 個分頁有變,<ph name="ANY_CLOSED" /> 個已關閉}other{<ph name="MANY_CHANGED" /> 個分頁有變,<ph name="ANY_CLOSED" /> 個已關閉}}</translation> <translation id="4371591986692297148">未啟用</translation> +<translation id="4431937619879060901">你將立即無法再存取「<ph name="GROUP_NAME" />」分頁群組,此分頁群組亦會從你的所有裝置刪除</translation> <translation id="4460014764210899310">未分組</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{要關閉 1 個閒置分頁嗎?}other{要關閉 <ph name="TAB_COUNT_MANY" /> 個閒置分頁嗎?}}</translation> <translation id="4686942373615810936">剛才建立</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">商店資料同可用選項喺螢幕最頂嘅附近</translation> <translation id="5627941783489838464">沒有分頁更新</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{還原分頁}other{還原分頁}}</translation> +<translation id="5647702255748985085">要離開群組嗎?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> 個來自 Chrome 的連結}other{<ph name="TABS_COUNT_MANY" /> 個來自 Chrome 的連結}}</translation> <translation id="58326064309361797">拖曳分頁來分組</translation> <translation id="5901630391730855834">黃色</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002">揀咗<ph name="COLOR_NAME" /></translation> <translation id="7326879924029668159">查看退貨政策等資料</translation> <translation id="7352298686197644113">查看已開啟分頁中有哪項產品降價</translation> +<translation id="742664698522525515">要保留群組嗎?</translation> <translation id="7452985128687107478">分頁群組會自動儲存並同步至所有裝置</translation> <translation id="747459581954555080">全部還原</translation> <translation id="750886945254958667">如果保留群組,你之後可新增分頁;如果不再使用,亦可離開群組</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">全部關閉</translation> <translation id="9090098097337832354">閂咗關於呢間商店嘅資料</translation> <translation id="9114502155681725011">開啟分頁群組「<ph name="TITLE_OF_GROUP" />」的操作選單,顏色為「<ph name="COLOR_NAME" />」。</translation> +<translation id="9169141410816678175">所有人將立即無法再存取「<ph name="GROUP_NAME" />」分頁群組,此分頁群組亦會從所有裝置刪除</translation> <translation id="9169594135889675189">喺群組入面加新嘅分頁</translation> <translation id="9216898458513705996">分頁會在此裝置上保持開啟,但該群組會從所有已登入 <ph name="USER_EMAIL" /> 的裝置刪除</translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{展開有 <ph name="TABS_COUNT_ONE" /> 個分頁嘅分頁群組,顏色係<ph name="COLOR_NAME" />。}other{展開有 <ph name="TABS_COUNT_MANY" /> 個分頁嘅分頁群組,顏色係<ph name="COLOR_NAME" />。}}</translation> +<translation id="94870150074703282">要刪除群組嗎?</translation> <translation id="992256792861109788">粉紅色</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-TW.xtb b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-TW.xtb index 4f8614c..4d8f4aa6 100644 --- a/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-TW.xtb +++ b/chrome/android/features/tab_ui/java/strings/translations/android_chrome_tab_ui_strings_zh-TW.xtb
@@ -76,6 +76,7 @@ <translation id="427987768447457592">新分頁群組</translation> <translation id="4320174784941799771">{NUMBER_OF_TABS_CHANGED,plural, =1{已變更 <ph name="ONE_CHANGED" /> 個分頁、關閉 <ph name="ANY_CLOSED" /> 個分頁}other{已變更 <ph name="MANY_CHANGED" /> 個分頁、關閉 <ph name="ANY_CLOSED" /> 個分頁}}</translation> <translation id="4371591986692297148">未啟用</translation> +<translation id="4431937619879060901">你將立即失去「<ph name="GROUP_NAME" />」分頁群組的存取權,且該群組會從你的所有裝置中刪除</translation> <translation id="4460014764210899310">取消分組</translation> <translation id="4632233446660511480">{TAB_COUNT,plural, =1{要關閉 1 個閒置分頁嗎?}other{要關閉 <ph name="TAB_COUNT_MANY" /> 個閒置分頁嗎?}}</translation> <translation id="4686942373615810936">剛剛建立</translation> @@ -106,6 +107,7 @@ <translation id="5556417849629758491">商店資訊和可用選項位於靠近畫面頂端的地方</translation> <translation id="5627941783489838464">沒有更新的分頁</translation> <translation id="5635915157654811450">{TAB_COUNT,plural, =1{還原分頁}other{要還原分頁嗎?}}</translation> +<translation id="5647702255748985085">要退出群組嗎?</translation> <translation id="5656738671621697952">{TABS_COUNT,plural, =1{<ph name="TABS_COUNT_ONE" /> 個來自 Chrome 的連結}other{<ph name="TABS_COUNT_MANY" /> 個來自 Chrome 的連結}}</translation> <translation id="58326064309361797">拖曳分頁即可進行分組</translation> <translation id="5901630391730855834">黃色</translation> @@ -141,6 +143,7 @@ <translation id="731648547091221002">已選取<ph name="COLOR_NAME" /></translation> <translation id="7326879924029668159">查看退貨政策等資訊</translation> <translation id="7352298686197644113">查看已開啟分頁中的降價商品</translation> +<translation id="742664698522525515">要保留群組嗎?</translation> <translation id="7452985128687107478">分頁群組會自動儲存並同步至所有裝置</translation> <translation id="747459581954555080">全部還原</translation> <translation id="750886945254958667">如果保留,之後可以新增分頁;如果不會再使用,可以退出群組</translation> @@ -185,8 +188,10 @@ <translation id="8915916167043355778">全部關閉</translation> <translation id="9090098097337832354">這間店的資訊已關閉</translation> <translation id="9114502155681725011">開啟分頁群組「<ph name="TITLE_OF_GROUP" />」(<ph name="COLOR_NAME" />) 的動作選單。</translation> +<translation id="9169141410816678175">所有使用者都將立即失去「<ph name="GROUP_NAME" />」分頁群組的存取權,且該群組將從所有裝置中刪除</translation> <translation id="9169594135889675189">在群組中新增分頁</translation> <translation id="9216898458513705996">這些分頁會在這部裝置上保持開啟,但該群組會從所有已登入 <ph name="USER_EMAIL" /> 的裝置刪除</translation> <translation id="927441551066996669">{NUMBER_OF_TABS,plural, =1{展開含有 <ph name="TABS_COUNT_ONE" /> 個分頁的分頁群組,顏色為<ph name="COLOR_NAME" />。}other{展開含有 <ph name="TABS_COUNT_MANY" /> 個分頁的分頁群組,顏色為<ph name="COLOR_NAME" />。}}</translation> +<translation id="94870150074703282">要刪除群組嗎?</translation> <translation id="992256792861109788">粉紅色</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java index fc305d92..6f2f488 100644 --- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java +++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceMediator.java
@@ -48,7 +48,6 @@ import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; import org.chromium.chrome.browser.signin.SigninAndHistorySyncActivityLauncherImpl; -import org.chromium.chrome.browser.signin.SyncConsentActivityLauncherImpl; import org.chromium.chrome.browser.signin.services.IdentityServicesProvider; import org.chromium.chrome.browser.signin.services.SigninManager; import org.chromium.chrome.browser.suggestions.SuggestionsMetrics; @@ -937,7 +936,6 @@ mProfile, bottomSheetStrings, SigninAccessPoint.NTP_FEED_TOP_PROMO, - SyncConsentActivityLauncherImpl.getForProfile(mProfile), SigninAndHistorySyncActivityLauncherImpl.get()); if (!shouldCreatePromo || !promoController.canShowSyncPromo()) { return false;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillProfilesFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillProfilesFragment.java index d936d2d5..5c03f4e 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillProfilesFragment.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillProfilesFragment.java
@@ -308,10 +308,6 @@ if (profile.getRecordType() == RecordType.ACCOUNT) { return false; } - if (!ChromeFeatureList.isEnabled( - ChromeFeatureList.SYNC_ENABLE_CONTACT_INFO_DATA_TYPE_IN_TRANSPORT_MODE)) { - return false; - } SyncService syncService = SyncServiceFactory.getForProfile(getProfile()); return syncService == null || !syncService.getSelectedTypes().contains(UserSelectableType.AUTOFILL);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java index a6ef023..68a3803 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java
@@ -16,7 +16,6 @@ import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.signin.LegacySyncPromoView; import org.chromium.chrome.browser.signin.SigninAndHistorySyncActivityLauncherImpl; -import org.chromium.chrome.browser.signin.SyncConsentActivityLauncherImpl; import org.chromium.chrome.browser.signin.services.IdentityServicesProvider; import org.chromium.chrome.browser.signin.services.ProfileDataCache; import org.chromium.chrome.browser.signin.services.SigninManager; @@ -74,7 +73,6 @@ mProfile, bottomSheetStrings, SigninAccessPoint.BOOKMARK_MANAGER, - SyncConsentActivityLauncherImpl.getForProfile(mProfile), SigninAndHistorySyncActivityLauncherImpl.get()); if (syncPromoController.canShowSyncPromo()) { mProfileDataCache = ProfileDataCache.createWithDefaultImageSizeAndNoBadge(mContext);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinator.java index 15b4dea..8da201b7 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinator.java
@@ -67,7 +67,6 @@ import org.chromium.chrome.browser.privacy_sandbox.ActivityTypeMapper; import org.chromium.chrome.browser.privacy_sandbox.PrivacySandboxBridge; import org.chromium.chrome.browser.privacy_sandbox.PrivacySandboxDialogController; -import org.chromium.chrome.browser.privacy_sandbox.PrivacySandboxSurveyController; import org.chromium.chrome.browser.privacy_sandbox.SurfaceType; import org.chromium.chrome.browser.privacy_sandbox.TrackingProtectionSnackbarController; import org.chromium.chrome.browser.profiles.Profile; @@ -755,20 +754,12 @@ "Startup.Android.PrivacySandbox.ShouldShowAdsNoticeCCT", shouldShowPrivacySandboxDialog); } - PrivacySandboxSurveyController surveyController = - PrivacySandboxSurveyController.initialize( - mTabModelSelectorSupplier.get(), - mActivityLifecycleDispatcher, - mActivity, - mMessageDispatcher, - mActivityTabProvider, - profile); - String appId = mIntentDataProvider.get().getClientPackageName(); if (ChromeFeatureList.isEnabled( ChromeFeatureList.PRIVACY_SANDBOX_ADS_NOTICE_CCT) && shouldShowPrivacySandboxDialog && isCustomTab) { boolean shouldShowPrivacySandboxDialogAppIdCheck = true; + String appId = mIntentDataProvider.get().getClientPackageName(); String paramAdsNoticeAppId = ChromeFeatureList.getFieldTrialParamByFeature( ChromeFeatureList.PRIVACY_SANDBOX_ADS_NOTICE_CCT, @@ -789,17 +780,7 @@ SurfaceType.AGACCT, mWindowAndroid); } - } else if (surveyController != null - && !ChromeFeatureList.isEnabled( - ChromeFeatureList.PRIVACY_SANDBOX_ADS_NOTICE_CCT) - && shouldShowPrivacySandboxDialog - && isCustomTab) { - surveyController.scheduleAdsCctControlSurveyLaunch( - appId, - new PrivacySandboxBridge(currentModelProfile) - .getRequiredPromptType(SurfaceType.AGACCT)); } - if (!didShowPrompt) { didShowPrompt = RequestDesktopUtils
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java index 73a8b5e..f51197f 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
@@ -19,7 +19,6 @@ import org.chromium.chrome.browser.recent_tabs.ForeignSessionHelper.ForeignSession; import org.chromium.chrome.browser.recent_tabs.ForeignSessionHelper.ForeignSessionTab; import org.chromium.chrome.browser.signin.SigninAndHistorySyncActivityLauncherImpl; -import org.chromium.chrome.browser.signin.SyncConsentActivityLauncherImpl; import org.chromium.chrome.browser.signin.services.IdentityServicesProvider; import org.chromium.chrome.browser.signin.services.ProfileDataCache; import org.chromium.chrome.browser.signin.services.SigninManager; @@ -132,7 +131,6 @@ mProfile, bottomSheetStrings, SigninAccessPoint.RECENT_TABS, - SyncConsentActivityLauncherImpl.getForProfile(mProfile), SigninAndHistorySyncActivityLauncherImpl.get()); if (ChromeFeatureList.isEnabled(ChromeFeatureList.UNO_PHASE_2_FOLLOW_UP)) { mSigninPromoCoordinator =
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSurveyController.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSurveyController.java index b358cda..5fc80620 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSurveyController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSurveyController.java
@@ -128,10 +128,7 @@ private boolean mHasSeenNtp; private boolean mOverrideChannelForTesting; private int mChannelForTesting; - private static long sAdsCctDelayOverrideMilliseconds; - private static boolean sOverrideAdsCctDelay; private static boolean sEnableForTesting; - private static final long DEFAULT_ADS_CCT_DELAY_MS = 20_000L; PrivacySandboxSurveyController( TabModelSelector tabModelSelector, @@ -198,10 +195,6 @@ return true; } - private long getAdsCctDelayMilliseconds() { - return sOverrideAdsCctDelay ? sAdsCctDelayOverrideMilliseconds : DEFAULT_ADS_CCT_DELAY_MS; - } - // Schedules the launch of an Ads CCT Treatment survey. // Should only be invoked after the closure of either the EEA or ROW notice. public void scheduleAdsCctTreatmentSurveyLaunch(String appId) { @@ -211,7 +204,7 @@ PostTask.postDelayedTask( TaskTraits.UI_DEFAULT, () -> maybeLaunchAdsCctTreatmentSurvey(), - getAdsCctDelayMilliseconds()); + /*20 seconds*/ 20000); } // Determines the appropriate survey to launch based on the user interaction with either the EEA @@ -247,7 +240,7 @@ PostTask.postDelayedTask( TaskTraits.UI_DEFAULT, () -> maybeLaunchAdsCctControlSurvey(promptType), - getAdsCctDelayMilliseconds()); + /*20 seconds*/ 20000); } // Determines the appropriate survey to launch based on the prompt type. @@ -461,11 +454,4 @@ mChannelForTesting = channel; ResettersForTesting.register(() -> mChannelForTesting = Channel.DEFAULT); } - - // Overrides the survey delay - public static void overrideAdsCctSurveyDelayForTesting(long delayMilliseconds) { - sAdsCctDelayOverrideMilliseconds = delayMilliseconds; - sOverrideAdsCctDelay = true; - ResettersForTesting.register(() -> sOverrideAdsCctDelay = false); - } }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/settings/AutofillProfilesFragmentTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/settings/AutofillProfilesFragmentTest.java index 28076c12..e915b79 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/settings/AutofillProfilesFragmentTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/settings/AutofillProfilesFragmentTest.java
@@ -39,7 +39,6 @@ import org.chromium.base.test.util.CriteriaHelper; import org.chromium.base.test.util.DisableIf; import org.chromium.base.test.util.Feature; -import org.chromium.base.test.util.Features.DisableFeatures; import org.chromium.base.test.util.Features.EnableFeatures; import org.chromium.chrome.browser.autofill.AutofillTestHelper; import org.chromium.chrome.browser.autofill.editors.EditorDialogView; @@ -67,10 +66,7 @@ /** Unit test suite for AutofillProfilesFragment. */ @RunWith(ChromeJUnit4ClassRunner.class) -@EnableFeatures({ - ChromeFeatureList.SYNC_ENABLE_CONTACT_INFO_DATA_TYPE_IN_TRANSPORT_MODE, - ChromeFeatureList.PLUS_ADDRESSES_ENABLED -}) +@EnableFeatures({ChromeFeatureList.PLUS_ADDRESSES_ENABLED}) // TODO(crbug.com/344657376): Failing when batched, batch this again. public class AutofillProfilesFragmentTest { private static final AutofillProfile sLocalOrSyncProfile = @@ -681,22 +677,6 @@ 0, findPreference(sLocalOrSyncProfile.getFullName()).getWidgetLayoutResource()); } - /** Cloud off icons are shown conditionally depending on the 2 feature flags being turned on. */ - @Test - @MediumTest - @Feature({"Preferences"}) - @DisableFeatures({ChromeFeatureList.SYNC_ENABLE_CONTACT_INFO_DATA_TYPE_IN_TRANSPORT_MODE}) - public void testLocalProfiles_NoRequiredFeatureFlags() throws Exception { - setUpMockPrimaryAccount("test@account.com"); - setUpMockSyncService(false, new HashSet()); - - // Trigger address profile list rebuild. - mHelper.setProfile(sAccountProfile); - assertEquals(0, findPreference(sAccountProfile.getFullName()).getWidgetLayoutResource()); - assertEquals( - 0, findPreference(sLocalOrSyncProfile.getFullName()).getWidgetLayoutResource()); - } - @Test @MediumTest @Feature({"Preferences"})
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSurveyControllerIntegrationTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSurveyControllerIntegrationTest.java index 9f4a4031..00b898a 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSurveyControllerIntegrationTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSurveyControllerIntegrationTest.java
@@ -4,15 +4,6 @@ package org.chromium.chrome.browser.privacy_sandbox; -import static androidx.test.espresso.Espresso.onView; -import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist; -import static androidx.test.espresso.matcher.ViewMatchers.withId; -import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation; - -import android.content.Context; -import android.content.Intent; - -import androidx.test.core.app.ApplicationProvider; import androidx.test.filters.MediumTest; import org.junit.Assert; @@ -21,25 +12,16 @@ import org.junit.Test; import org.junit.runner.RunWith; -import org.chromium.base.CommandLine; import org.chromium.base.ThreadUtils; import org.chromium.base.test.util.Batch; import org.chromium.base.test.util.CriteriaHelper; import org.chromium.base.test.util.Features; -import org.chromium.base.test.util.Features.DisableFeatures; import org.chromium.base.test.util.RequiresRestart; -import org.chromium.chrome.browser.browserservices.intents.SessionHolder; -import org.chromium.chrome.browser.customtabs.CustomTabActivityTestRule; -import org.chromium.chrome.browser.customtabs.CustomTabsConnection; -import org.chromium.chrome.browser.customtabs.CustomTabsIntentTestUtils; -import org.chromium.chrome.browser.firstrun.FirstRunStatus; import org.chromium.chrome.browser.flags.ChromeFeatureList; -import org.chromium.chrome.browser.flags.ChromeSwitches; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.ui.hats.TestSurveyUtils; import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.ChromeTabbedActivityTestRule; -import org.chromium.chrome.test.R; import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.components.messages.DismissReason; import org.chromium.components.messages.MessageBannerProperties; @@ -48,7 +30,6 @@ import org.chromium.components.messages.MessageIdentifier; import org.chromium.components.messages.MessageStateHandler; import org.chromium.components.messages.MessagesTestHelper; -import org.chromium.net.test.EmbeddedTestServer; import org.chromium.ui.modelutil.PropertyModel; import java.util.List; @@ -61,245 +42,16 @@ public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); @Rule - public CustomTabActivityTestRule mCustomTabActivityTestRule = new CustomTabActivityTestRule(); - - @Rule - public ChromeTabbedActivityTestRule mChromeTabbedActivityTestRule = - new ChromeTabbedActivityTestRule(); - - @Rule public TestSurveyUtils.TestSurveyComponentRule mTestSurveyComponentRule = new TestSurveyUtils.TestSurveyComponentRule(); private MessageDispatcher mMessageDispatcher; private PropertyModel mSurveyMessage; - private String mTestPage; - private EmbeddedTestServer mTestServer; - private static final String TEST_PAGE = "/chrome/test/data/android/google.html"; @Before public void setup() { PrivacySandboxSurveyController.setEnableForTesting(); mActivityTestRule.startMainActivityWithURL(UrlConstants.NTP_URL); - - // CCT setup. - ThreadUtils.runOnUiThreadBlocking(() -> FirstRunStatus.setFirstRunFlowComplete(true)); - Context appContext = getInstrumentation().getTargetContext().getApplicationContext(); - mTestServer = EmbeddedTestServer.createAndStartServer(appContext); - mTestPage = mTestServer.getURL(TEST_PAGE); - - // Explicitly remove the `DISABLE_FIRST_RUN_EXPERIENCE` (set via `TestSurveyComponentRule`) - // commandline switch which prevents us from receiving a valid prompt type via - // `PrivacySandboxBridge`. - CommandLine.getInstance().removeSwitch(ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE); - PrivacySandboxSurveyController.overrideAdsCctSurveyDelayForTesting( - /* delayMilliseconds= */ 0); - } - - private Intent createMinimalCustomTabIntent() { - Intent intent = - CustomTabsIntentTestUtils.createMinimalCustomTabIntent( - ApplicationProvider.getApplicationContext(), mTestPage); - var token = SessionHolder.getSessionHolderFromIntent(intent); - // x86 devices will return a null package name unless we explicitly override it. - CustomTabsConnection connection = CustomTabsConnection.getInstance(); - connection.newSession(token.getSessionAsCustomTab()); - connection.overridePackageNameForSessionForTesting(token, "org.chromium.chrome.tests"); - return intent; - } - - @Test - @MediumTest - @Features.EnableFeatures({ - ChromeFeatureList.PRIVACY_SANDBOX_CCT_ADS_NOTICE_SURVEY - + ":app-id/org.chromium.chrome.tests/" - + "row-control-trigger-id/" - + TestSurveyUtils.TEST_TRIGGER_ID_FOO, - ChromeFeatureList.PRIVACY_SANDBOX_SETTINGS_4 - + ":force-show-notice-row-for-testing/true/notice-required/true" - }) - @DisableFeatures({ - ChromeFeatureList.PRIVACY_SANDBOX_ADS_NOTICE_CCT, - }) - public void adsCctSurveyForRowControlAcceptSurvey() { - mCustomTabActivityTestRule.startCustomTabActivityWithIntent(createMinimalCustomTabIntent()); - onView(withId(R.id.privacy_sandbox_dialog)).check(doesNotExist()); - waitForSurveyMessageToShowOnCct(); - ThreadUtils.runOnUiThreadBlocking( - () -> { - mSurveyMessage.get(MessageBannerProperties.ON_PRIMARY_ACTION).get(); - }); - Assert.assertEquals( - "Last shown survey triggerId not match.", - TestSurveyUtils.TEST_TRIGGER_ID_FOO, - mTestSurveyComponentRule.getLastShownTriggerId()); - } - - @Test - @MediumTest - @Features.EnableFeatures({ - ChromeFeatureList.PRIVACY_SANDBOX_CCT_ADS_NOTICE_SURVEY - + ":app-id/org.chromium.chrome.tests/" - + "row-control-trigger-id/" - + TestSurveyUtils.TEST_TRIGGER_ID_FOO, - ChromeFeatureList.PRIVACY_SANDBOX_SETTINGS_4 - + ":force-show-notice-row-for-testing/true/notice-required/true" - }) - @DisableFeatures({ - ChromeFeatureList.PRIVACY_SANDBOX_ADS_NOTICE_CCT, - }) - public void adsCctSurveyForRowControlDismissSurvey() { - mCustomTabActivityTestRule.startCustomTabActivityWithIntent(createMinimalCustomTabIntent()); - onView(withId(R.id.privacy_sandbox_dialog)).check(doesNotExist()); - waitForSurveyMessageToShowOnCct(); - ThreadUtils.runOnUiThreadBlocking( - () -> mMessageDispatcher.dismissMessage(mSurveyMessage, DismissReason.GESTURE)); - Assert.assertTrue( - "Survey displayed not recorded.", - mTestSurveyComponentRule.isPromptShownForTriggerId( - TestSurveyUtils.TEST_TRIGGER_ID_FOO)); - } - - @Test - @MediumTest - @Features.EnableFeatures({ - ChromeFeatureList.PRIVACY_SANDBOX_CCT_ADS_NOTICE_SURVEY - + ":app-id/org.chromium.chrome.tests/", - ChromeFeatureList.PRIVACY_SANDBOX_SETTINGS_4 - + ":force-show-notice-row-for-testing/true/notice-required/true" - }) - @DisableFeatures({ - ChromeFeatureList.PRIVACY_SANDBOX_ADS_NOTICE_CCT, - }) - public void adsCctSurveyForRowControlNotShownWhenNoTriggerIdProvided() { - mCustomTabActivityTestRule.startCustomTabActivityWithIntent(createMinimalCustomTabIntent()); - Assert.assertFalse( - "Survey was displayed.", - mTestSurveyComponentRule.isPromptShownForTriggerId( - TestSurveyUtils.TEST_TRIGGER_ID_FOO)); - } - - @Test - @MediumTest - @Features.EnableFeatures({ - ChromeFeatureList.PRIVACY_SANDBOX_CCT_ADS_NOTICE_SURVEY - + ":app-id/org.chromium.chrome.tests/" - + "eea-control-trigger-id/" - + TestSurveyUtils.TEST_TRIGGER_ID_FOO, - ChromeFeatureList.PRIVACY_SANDBOX_SETTINGS_4 - + ":force-show-consent-for-testing/true/consent-required/true" - }) - @DisableFeatures({ - ChromeFeatureList.PRIVACY_SANDBOX_ADS_NOTICE_CCT, - }) - public void adsCctSurveyForEeaControlAcceptSurvey() { - mCustomTabActivityTestRule.startCustomTabActivityWithIntent(createMinimalCustomTabIntent()); - onView(withId(R.id.privacy_sandbox_dialog)).check(doesNotExist()); - waitForSurveyMessageToShowOnCct(); - ThreadUtils.runOnUiThreadBlocking( - () -> { - mSurveyMessage.get(MessageBannerProperties.ON_PRIMARY_ACTION).get(); - }); - Assert.assertEquals( - "Last shown survey triggerId not match.", - TestSurveyUtils.TEST_TRIGGER_ID_FOO, - mTestSurveyComponentRule.getLastShownTriggerId()); - } - - @Test - @MediumTest - @Features.EnableFeatures({ - ChromeFeatureList.PRIVACY_SANDBOX_CCT_ADS_NOTICE_SURVEY - + ":app-id/org.chromium.chrome.tests/" - + "eea-control-trigger-id/" - + TestSurveyUtils.TEST_TRIGGER_ID_FOO, - ChromeFeatureList.PRIVACY_SANDBOX_SETTINGS_4 - + ":force-show-consent-for-testing/true/consent-required/true" - }) - @DisableFeatures({ - ChromeFeatureList.PRIVACY_SANDBOX_ADS_NOTICE_CCT, - }) - public void adsCctSurveyForEeaControlDismissSurvey() { - mCustomTabActivityTestRule.startCustomTabActivityWithIntent(createMinimalCustomTabIntent()); - onView(withId(R.id.privacy_sandbox_dialog)).check(doesNotExist()); - waitForSurveyMessageToShowOnCct(); - ThreadUtils.runOnUiThreadBlocking( - () -> mMessageDispatcher.dismissMessage(mSurveyMessage, DismissReason.GESTURE)); - Assert.assertTrue( - "Survey displayed not recorded.", - mTestSurveyComponentRule.isPromptShownForTriggerId( - TestSurveyUtils.TEST_TRIGGER_ID_FOO)); - } - - @Test - @MediumTest - @Features.EnableFeatures({ - ChromeFeatureList.PRIVACY_SANDBOX_CCT_ADS_NOTICE_SURVEY - + ":app-id/org.chromium.chrome.tests/", - ChromeFeatureList.PRIVACY_SANDBOX_SETTINGS_4 - + ":force-show-consent-for-testing/true/consent-required/true" - }) - @DisableFeatures({ - ChromeFeatureList.PRIVACY_SANDBOX_ADS_NOTICE_CCT, - }) - public void adsCctSurveyForEeaControlNotShownWhenNoTriggerIdProvided() { - mCustomTabActivityTestRule.startCustomTabActivityWithIntent(createMinimalCustomTabIntent()); - Assert.assertFalse( - "Survey was displayed.", - mTestSurveyComponentRule.isPromptShownForTriggerId( - TestSurveyUtils.TEST_TRIGGER_ID_FOO)); - } - - @Test - @MediumTest - @Features.EnableFeatures({ - ChromeFeatureList.PRIVACY_SANDBOX_CCT_ADS_NOTICE_SURVEY - + ":app-id/org.chromium.chrome.tests/", - ChromeFeatureList.PRIVACY_SANDBOX_SETTINGS_4 - + ":force-show-consent-for-testing/true/consent-required/true" - + "/force-show-notice-row-for-testing/true/notice-required/true", - ChromeFeatureList.PRIVACY_SANDBOX_ADS_NOTICE_CCT - }) - public void adsCctSurveyForControlSurveyNotShownWhenAdsNoticeCctFeatureEnabled() { - mCustomTabActivityTestRule.startCustomTabActivityWithIntent(createMinimalCustomTabIntent()); - Assert.assertFalse( - "Survey was displayed.", - mTestSurveyComponentRule.isPromptShownForTriggerId( - TestSurveyUtils.TEST_TRIGGER_ID_FOO)); - } - - @Test - @MediumTest - @Features.EnableFeatures({ - ChromeFeatureList.PRIVACY_SANDBOX_CCT_ADS_NOTICE_SURVEY + ":app-id/invalid-app-id/", - ChromeFeatureList.PRIVACY_SANDBOX_SETTINGS_4 - + ":force-show-consent-for-testing/true/consent-required/true" - + "/force-show-notice-row-for-testing/true/notice-required/true", - }) - @DisableFeatures({ChromeFeatureList.PRIVACY_SANDBOX_ADS_NOTICE_CCT}) - public void adsCctSurveyForControlSurveyNotShownWithInvalidAppId() { - mCustomTabActivityTestRule.startCustomTabActivityWithIntent(createMinimalCustomTabIntent()); - Assert.assertFalse( - "Survey was displayed.", - mTestSurveyComponentRule.isPromptShownForTriggerId( - TestSurveyUtils.TEST_TRIGGER_ID_FOO)); - } - - @Test - @MediumTest - @Features.EnableFeatures({ - ChromeFeatureList.PRIVACY_SANDBOX_SETTINGS_4 - + ":force-show-consent-for-testing/true/consent-required/true" - + "/force-show-notice-row-for-testing/true/notice-required/true", - }) - @DisableFeatures({ - ChromeFeatureList.PRIVACY_SANDBOX_ADS_NOTICE_CCT, - ChromeFeatureList.PRIVACY_SANDBOX_CCT_ADS_NOTICE_SURVEY - }) - public void adsCctSurveyForControlSurveyNotShownWithSurveyFeatureDisabled() { - mCustomTabActivityTestRule.startCustomTabActivityWithIntent(createMinimalCustomTabIntent()); - Assert.assertEquals( - "Survey was displayed.", mTestSurveyComponentRule.getLastShownTriggerId(), null); } @Test @@ -357,22 +109,6 @@ TestSurveyUtils.TEST_TRIGGER_ID_FOO)); } - private void waitForSurveyMessageToShowOnCct() { - Tab tab = mCustomTabActivityTestRule.getActivity().getActivityTab(); - CriteriaHelper.pollUiThread(() -> !tab.isLoading() && tab.isUserInteractable()); - ThreadUtils.runOnUiThreadBlocking( - () -> { - mMessageDispatcher = - MessageDispatcherProvider.from( - mCustomTabActivityTestRule.getActivity().getWindowAndroid()); - }); - CriteriaHelper.pollUiThread( - () -> { - mSurveyMessage = getSurveyMessage(); - return mSurveyMessage != null; - }); - } - private void waitForSurveyMessageToShow() { Tab tab = mActivityTestRule.getActivity().getActivityTab(); CriteriaHelper.pollUiThread(() -> !tab.isLoading() && tab.isUserInteractable());
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/settings/MainSettingsFragmentTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/settings/MainSettingsFragmentTest.java index c67d51d8..7e914a8 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/settings/MainSettingsFragmentTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/settings/MainSettingsFragmentTest.java
@@ -91,8 +91,6 @@ import org.chromium.chrome.browser.password_manager.PasswordManagerUtilBridge; import org.chromium.chrome.browser.password_manager.PasswordManagerUtilBridgeJni; import org.chromium.chrome.browser.password_manager.settings.PasswordSettings; -import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; -import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; import org.chromium.chrome.browser.privacy.settings.PrivacySettings; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.safety_check.SafetyCheckSettingsFragment; @@ -119,7 +117,6 @@ import org.chromium.chrome.browser.ui.signin.BottomSheetSigninAndHistorySyncConfig.WithAccountSigninMode; import org.chromium.chrome.browser.ui.signin.SigninAndHistorySyncActivityLauncher; import org.chromium.chrome.browser.ui.signin.SyncConsentActivityLauncher; -import org.chromium.chrome.browser.ui.signin.SyncPromoController; import org.chromium.chrome.browser.ui.signin.history_sync.HistorySyncConfig; import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.R; @@ -210,12 +207,6 @@ @After public void tearDown() { - ChromeSharedPreferences.getInstance() - .removeKey( - SyncPromoController.getPromoShowCountPreferenceName( - SigninAccessPoint.SETTINGS)); - ChromeSharedPreferences.getInstance() - .removeKey(ChromePreferenceKeys.SYNC_PROMO_TOTAL_SHOW_COUNT); Intents.release(); } @@ -639,14 +630,6 @@ } @Test - @MediumTest - public void testSignInPromoHidden() { - startSettings(); - - onView(withText(R.string.sync_promo_title_settings)).check(doesNotExist()); - } - - @Test @SmallTest @EnableFeatures(ChromeFeatureList.REPLACE_SYNC_PROMOS_WITH_SIGN_IN_PROMOS) public void
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/ManageSyncSettingsTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/ManageSyncSettingsTest.java index 0285cd6..a5451a3 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/sync/ManageSyncSettingsTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/sync/ManageSyncSettingsTest.java
@@ -252,11 +252,8 @@ ManageSyncSettings.PREF_ACCOUNT_SECTION_PASSWORDS_TOGGLE, ManageSyncSettings.PREF_ACCOUNT_SECTION_SETTINGS_TOGGLE, ManageSyncSettings.PREF_ACCOUNT_SECTION_BOOKMARKS_TOGGLE, - ManageSyncSettings.PREF_ACCOUNT_SECTION_READING_LIST_TOGGLE)); - if (ChromeFeatureList.isEnabled( - ChromeFeatureList.SYNC_ENABLE_CONTACT_INFO_DATA_TYPE_IN_TRANSPORT_MODE)) { - expectedEnabledTypes.add(ManageSyncSettings.PREF_ACCOUNT_SECTION_ADDRESSES_TOGGLE); - } + ManageSyncSettings.PREF_ACCOUNT_SECTION_READING_LIST_TOGGLE, + ManageSyncSettings.PREF_ACCOUNT_SECTION_ADDRESSES_TOGGLE)); mSyncTestRule.setUpAccountAndSignInForTesting(); ManageSyncSettings fragment = startManageSyncPreferences();
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/vr/WebXrArAnchorsTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/vr/WebXrArAnchorsTest.java index 83a90179..3d7a6f7 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/vr/WebXrArAnchorsTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/vr/WebXrArAnchorsTest.java
@@ -21,6 +21,7 @@ import org.chromium.base.test.params.ParameterSet; import org.chromium.base.test.params.ParameterizedRunner; import org.chromium.base.test.util.CommandLineFlags; +import org.chromium.base.test.util.DisabledTest; import org.chromium.chrome.browser.flags.ChromeSwitches; import org.chromium.chrome.browser.vr.rules.ArPlaybackFile; import org.chromium.chrome.browser.vr.rules.XrActivityRestriction; @@ -90,6 +91,7 @@ */ @Test @LargeTest + @DisabledTest(message = "https://crbug.com/389039407") @XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL}) @ArPlaybackFile( "chrome/test/data/xr/ar_playback_datasets/floor_session_with_tracking_loss_37s_30fps.mp4")
diff --git a/chrome/app/password_manager_ui_strings.grdp b/chrome/app/password_manager_ui_strings.grdp index 13ffe48..62f746b2 100644 --- a/chrome/app/password_manager_ui_strings.grdp +++ b/chrome/app/password_manager_ui_strings.grdp
@@ -956,6 +956,27 @@ <message name="IDS_PASSWORD_MANAGER_UI_PASSWORD_CHANGE_INFO_BUBBLE_DETAILS" desc="This is the detailed explanation in the dialog appearing during password change flow. It appears while password change is ongoing."> Chrome is creating a strong password for you. You don't need to remember it because it's saved for you in <ph name="GOOGLE_PASSWORD_MANAGER">$1<ex>Google Password Manager</ex></ph> for <ph name="EMAIL">$2<ex>user@gmail.com</ex></ph>. </message> + <message name="IDS_PASSWORD_MANAGER_UI_PASSWORD_CHANGE_CONTINUE" desc="The caption on the button in the privacy notice bubble, which reflects user's agreement to start the password change flow." translateable="false"> + Continue + </message> + <message name="IDS_PASSWORD_MANAGER_UI_PASSWORD_CHANGE_PRIVACY_NOTICE_TITLE" desc="The title of the privacy notice bubble shown before starting the password change." translateable="false"> + Lorem ipsum dolor + </message> + <message name="IDS_PASSWORD_MANAGER_UI_PASSWORD_CHANGE_PRIVACY_NOTICE_SUBTITLE" desc="The subtitle of the privacy notice bubble shown before starting the password change." translateable="false"> + Lorem ipsum dolor + </message> + <message name="IDS_PASSWORD_MANAGER_UI_PASSWORD_CHANGE_PRIVACY_NOTICE_ITEM_EXPERIMENTAL" desc="One of the items listed in the privacy notice bubble with which the user needs to agree by accepting the bubble to start the password change flow." translateable="false"> + Lorem ipsum dolor sit amet, consectetur adipiscing elit + </message> + <message name="IDS_PASSWORD_MANAGER_UI_PASSWORD_CHANGE_PRIVACY_NOTICE_ITEM_SENT_TO_GOOGLE" desc="One of the items listed in the privacy notice bubble with which the user needs to agree by accepting the bubble to start the password change flow." translateable="false"> + Etiam aliquam nulla quis consectetur egestas + </message> + <message name="IDS_PASSWORD_MANAGER_UI_PASSWORD_CHANGE_PRIVACY_NOTICE_ITEM_HUMAN_REVIEW" desc="One of the items listed in the privacy notice bubble with which the user needs to agree by accepting the bubble to start the password change flow." translateable="false"> + Phasellus at nisi a augue dictum blandit in ut velit + </message> + <message name="IDS_PASSWORD_MANAGER_UI_PASSWORD_CHANGE_PRIVACY_NOTICE_ITEM_ENCRYPTED" desc="One of the items listed in the privacy notice bubble with which the user needs to agree by accepting the bubble to start the password change flow." translateable="false"> + Ut id augue vel est accumsan fringilla non sit amet lectus + </message> <message name="IDS_PASSWORD_MANAGER_UI_PASSWORD_CHANGED_TITLE" desc="Title for a dialog which is shown after successful password change."> Password changed </message>
diff --git a/chrome/app/resources/chromium_strings_as.xtb b/chrome/app/resources/chromium_strings_as.xtb index bdba69f9..558846f 100644 --- a/chrome/app/resources/chromium_strings_as.xtb +++ b/chrome/app/resources/chromium_strings_as.xtb
@@ -147,6 +147,7 @@ <translation id="2910007522516064972">&Chromiumৰ বিষয়ে</translation> <translation id="2915996080311180594">পাছত ৰিষ্টাৰ্ট কৰক</translation> <translation id="2928420929544864228">ইনষ্টল কৰাটো সম্পূৰ্ণ হ’ল।</translation> +<translation id="2933336679234709858">আপোনাৰ ডেটা আপোনাৰ পাছফ্ৰে’জৰ জৰিয়তে এনক্ৰিপ্ট কৰা হৈছে। আপোনাৰ Google একাউণ্টত Chromiumৰ ডেটা ব্যৱহাৰ আৰু ছেভ কৰিবলৈ এইটো দিয়ক।</translation> <translation id="2945997411976714835">ইনষ্টল কৰোঁতে আসোঁৱাহ হৈছে: ইনষ্টলাৰৰ প্ৰক্ৰিয়াটো আৰম্ভ হ’ব পৰা নাই।</translation> <translation id="2970426615109535079">আপোনাৰ প্ৰতিষ্ঠানে Chromium পৰিচালনা কৰে</translation> <translation id="2977470724722393594">Chromium একেবাৰে শেহতীয়া অৱস্থাত আছে</translation> @@ -218,6 +219,7 @@ <translation id="391789666908693569">আপোনাৰ একাউণ্টটো <ph name="MANAGER_NAME" />এ পৰিচালনা কৰে। আপোনাৰ প্ৰশাসকে এই Chromium ব্ৰাউজাৰৰ প্ৰ’ফাইলটো আৰু বুকমাৰ্ক, ইতিহাস আৰু পাছৱৰ্ডৰ দৰে ইয়াৰ ডেটা চাব আৰু সম্পাদনা কৰিব পাৰে।</translation> <translation id="3941890832296813527">ইনষ্টল কৰোঁতে আসোঁৱাহ হৈছে: ইনষ্টলাৰৰ ফাইলৰ নামটো অমান্য অথবা অসমৰ্থিত।</translation> <translation id="3945058413678539331">Chromiumএ পাছৱর্ডসমূহ প্ৰতিলিপি কৰিবলৈ চেষ্টা কৰি আছে। ইয়াৰ অনুমতি দিবলৈ আপোনাৰ Windowsৰ পাছৱৰ্ডটো টাইপ কৰক।</translation> +<translation id="3954172517175569325">আপুনি নিজৰ Google একাউণ্টত ছেভ কৰি থোৱা আপোনাৰ পাছৱৰ্ড, পৰিশোধ পদ্ধতি আৰু ঠিকনাসমূহ এই ডিভাইচটোৰ পৰা আঁতৰোৱা হ’ব। সেইসমূহ পুনৰ Chromiumত ব্যৱহাৰ কৰিবলৈ, পুনৰ ছাইন ইন কৰক।</translation> <translation id="3962647064319009959">Chromiumএ আপোনাক কিদৰে সুৰক্ষিত কৰি ৰাখে জানক</translation> <translation id="3975724895399328945">&Google Chrome for Testingৰ বিষয়ে</translation> <translation id="3997429360543082038">ChromiumOSৰ বিষয়ে</translation>
diff --git a/chrome/app/resources/chromium_strings_az.xtb b/chrome/app/resources/chromium_strings_az.xtb index a009a67..a4f3e69 100644 --- a/chrome/app/resources/chromium_strings_az.xtb +++ b/chrome/app/resources/chromium_strings_az.xtb
@@ -217,6 +217,7 @@ <translation id="391789666908693569">Hesabınızı <ph name="MANAGER_NAME" /> idarə edir. Administratorunuz bu Chromium brauzer profilini və onun əlfəcinlər, tarixçə və parollar kimi datasını görə və redaktə edə bilər.</translation> <translation id="3941890832296813527">Quraşdırma xətası: Quraşdırıcı fayl adı yanlışdır və ya dəstəklənmir.</translation> <translation id="3945058413678539331">Chromium parolları kopyalamağa çalışır. Buna icazə vermək üçün Windows parolunuzu yazın.</translation> +<translation id="3954172517175569325">Google Hesabınızda saxladığınız parollarınız, ödəniş metodlarınız və ünvanlarınız bu cihazdan silinəcək. Onları Chromium-da yenidən istifadə etmək üçün təkrar daxil olun.</translation> <translation id="3962647064319009959">Chromium-un təhlükəsizlik təminatı haqqında</translation> <translation id="3975724895399328945">Sınaq üçün Google Chrome haqqında</translation> <translation id="3997429360543082038">ChromiumOS haqqında</translation>
diff --git a/chrome/app/resources/chromium_strings_bg.xtb b/chrome/app/resources/chromium_strings_bg.xtb index 9f5bcb3..fd5a0182 100644 --- a/chrome/app/resources/chromium_strings_bg.xtb +++ b/chrome/app/resources/chromium_strings_bg.xtb
@@ -145,6 +145,7 @@ <translation id="2910007522516064972">Всичко за &Chromium</translation> <translation id="2915996080311180594">Рестартиране по-късно</translation> <translation id="2928420929544864228">Инсталирането завърши.</translation> +<translation id="2933336679234709858">Данните ви са шифровани с пропуска ви. Въведете го, за да използвате и запазвате данните от Chromium в профила си в Google.</translation> <translation id="2945997411976714835">Грешка при инсталирането: Стартирането на инсталационния процес не бе успешно.</translation> <translation id="2970426615109535079">Организацията ви управлява Chromium</translation> <translation id="2977470724722393594">Chromium е актуален</translation> @@ -214,6 +215,7 @@ <translation id="391789666908693569">Профилът ви се управлява от <ph name="MANAGER_NAME" />. Администраторът ви може да вижда и редактира този потребителски профил в браузъра Chromium, както и данните му – например отметките, историята и паролите.</translation> <translation id="3941890832296813527">Грешка при инсталирането: Името на файла с инсталационната програма е невалидно или не се поддържа.</translation> <translation id="3945058413678539331">Chromium опитва да копира паролите. За да разрешите това, въведете паролата си за Windows.</translation> +<translation id="3954172517175569325">Паролите, начините на плащане и адресите, които сте запазили в профила си в Google, ще бъдат премахнати от това устройство. За да ги използвате отново в Chromium, влезте пак в профила си.</translation> <translation id="3962647064319009959">Научете как Chromium ви защитава</translation> <translation id="3975724895399328945">Всичко за &Google Chrome for Testing</translation> <translation id="3997429360543082038">Всичко за Chromium OS</translation>
diff --git a/chrome/app/resources/chromium_strings_bn.xtb b/chrome/app/resources/chromium_strings_bn.xtb index 713520f..d3340aaf 100644 --- a/chrome/app/resources/chromium_strings_bn.xtb +++ b/chrome/app/resources/chromium_strings_bn.xtb
@@ -217,6 +217,7 @@ <translation id="391789666908693569"><ph name="MANAGER_NAME" /> আপনার অ্যাকাউন্ট ম্যানেজ করে। আপনার অ্যাডমিনিস্ট্রেটর এই Chromium ব্রাউজার প্রোফাইল ও বুকমার্ক, ইতিহাস এবং পাসওয়ার্ডের মতো ডেটা দেখতে ও ম্যানেজ করতে পারবেন।</translation> <translation id="3941890832296813527">ইনস্টল সংক্রান্ত সমস্যা: ইনস্টলার ফাইলের নাম ভুল বা সেটি কাজ করে না।</translation> <translation id="3945058413678539331">Chromium পাসওয়ার্ড কপি করার চেষ্টা করছে। অনুমতি দিতে আপনার Windows পাসওয়ার্ড টাইপ করুন।</translation> +<translation id="3954172517175569325">পাসওয়ার্ড, পেমেন্ট পদ্ধতি এবং ঠিকানা যা আপনার Google অ্যাকাউন্টে সেভ করে রেখেছেন সেগুলি এই ডিভাইস থেকে সরিয়ে দেওয়া হবে। Chromium-এ সেগুলি পুনরায় ব্যবহার করতে, আবার সাইন-ইন করুন।</translation> <translation id="3962647064319009959">Chromium কীভাবে আপনাকে সুরক্ষিত রাখে তা জানুন</translation> <translation id="3975724895399328945">Google Chrome for Testing সম্পর্কে</translation> <translation id="3997429360543082038">ChromiumOS সম্পর্কে</translation>
diff --git a/chrome/app/resources/chromium_strings_bs.xtb b/chrome/app/resources/chromium_strings_bs.xtb index 4a251e1..4f20983 100644 --- a/chrome/app/resources/chromium_strings_bs.xtb +++ b/chrome/app/resources/chromium_strings_bs.xtb
@@ -219,6 +219,7 @@ <translation id="391789666908693569">Vašim računom upravlja <ph name="MANAGER_NAME" />. Vaš administrator može vidjeti i urediti ovaj profil Chromium preglednika i njegove podatke kao što su oznake, historija i lozinke.</translation> <translation id="3941890832296813527">Greška prilikom instaliranja: naziv fajla programa za instaliranje nije važeći ili nije podržan.</translation> <translation id="3945058413678539331">Chromium pokušava kopirati lozinke. Unesite svoju lozinku za Windows da to dozvolite.</translation> +<translation id="3954172517175569325">Lozinke, načini plaćanja i adrese koje ste sačuvali na Google računu će se ukloniti s uređaja. Da ih ponovo koristite u Chromiumu, prijavite se ponovo.</translation> <translation id="3962647064319009959">Saznajte kako vas Chromium štiti</translation> <translation id="3975724895399328945">O verziji &Google Chrome for Testing</translation> <translation id="3997429360543082038">O ChromiumOS-u</translation>
diff --git a/chrome/app/resources/chromium_strings_ca.xtb b/chrome/app/resources/chromium_strings_ca.xtb index e2fe667..7012a34 100644 --- a/chrome/app/resources/chromium_strings_ca.xtb +++ b/chrome/app/resources/chromium_strings_ca.xtb
@@ -145,6 +145,7 @@ <translation id="2910007522516064972">Quant a &Chromium</translation> <translation id="2915996080311180594">Reinicia més tard</translation> <translation id="2928420929544864228">La instal·lació s'ha completat.</translation> +<translation id="2933336679234709858">Les teves dades s'encripten amb la teva frase de contrasenya. Per utilitzar i desar les dades de Chromium al teu Compte de Google, introdueix la frase de contrasenya.</translation> <translation id="2945997411976714835">Error d'instal·lació: no s'ha pogut iniciar el procés d'instal·lació.</translation> <translation id="2970426615109535079">La teva organització gestiona Chromium</translation> <translation id="2977470724722393594">Chromium està actualitzat</translation>
diff --git a/chrome/app/resources/chromium_strings_cy.xtb b/chrome/app/resources/chromium_strings_cy.xtb index 1454f34..0f00daac 100644 --- a/chrome/app/resources/chromium_strings_cy.xtb +++ b/chrome/app/resources/chromium_strings_cy.xtb
@@ -147,6 +147,7 @@ <translation id="2910007522516064972">Ynghylch &Chromium</translation> <translation id="2915996080311180594">Ailddechrau'n Ddiweddarach</translation> <translation id="2928420929544864228">Wedi gorffen gosod.</translation> +<translation id="2933336679234709858">Mae eich data wedi'u hamgryptio â'ch cyfrinymadrodd. Rhowch ef i ddefnyddio a chadw data Chromium yn eich Cyfrif Google.</translation> <translation id="2945997411976714835">Gwall gosod: Gwnaeth y broses gosodwr fethu â chychwyn.</translation> <translation id="2970426615109535079">Mae eich sefydliad yn rheoli Chromium</translation> <translation id="2977470724722393594">Mae Chromium yn gyfoes</translation> @@ -218,6 +219,7 @@ <translation id="391789666908693569">Rheolir eich cyfrif gan <ph name="MANAGER_NAME" />. Gall eich gweinyddwr weld a golygu'r proffil porwr Chromium hwn a'i ddata megis nodau tudalen, hanes a chyfrineiriau.</translation> <translation id="3941890832296813527">Gwall gosod: Mae enw ffeil y gosodwr yn annilys neu heb ei gefnogi.</translation> <translation id="3945058413678539331">Mae Chromium yn ceisio copïo cyfrineiriau. Teipiwch eich cyfrinair Windows i ganiatáu hyn.</translation> +<translation id="3954172517175569325">Bydd eich cyfrineiriau, eich dulliau talu a'ch cyfeiriadau a gadwyd gennych yn eich Cyfrif Google yn cael eu tynnu o'r ddyfais hon. I'w defnyddio eto yn Chromium, mewngofnodwch eto.</translation> <translation id="3962647064319009959">Dysgwch sut mae Chromium yn eich cadw'n ddiogel</translation> <translation id="3975724895399328945">Ynglŷn â &Google Chrome for Testing</translation> <translation id="3997429360543082038">Ynghylch ChromiumOS</translation>
diff --git a/chrome/app/resources/chromium_strings_da.xtb b/chrome/app/resources/chromium_strings_da.xtb index 77986fd..4bfc971 100644 --- a/chrome/app/resources/chromium_strings_da.xtb +++ b/chrome/app/resources/chromium_strings_da.xtb
@@ -217,6 +217,7 @@ <translation id="391789666908693569">Din konto administreres af <ph name="MANAGER_NAME" />. Din administrator kan se og redigere denne Chromium-browserprofil og dens data som f.eks. bogmærker, historik og adgangskoder.</translation> <translation id="3941890832296813527">Installationsfejl: Installationens filnavn er ugyldigt eller understøttes ikke.</translation> <translation id="3945058413678539331">Chromium forsøger at kopiere adgangskoder. Angiv din Windows-adgangskode for at tillade dette.</translation> +<translation id="3954172517175569325">De adgangskoder, betalingsmetoder og adresser, du har gemt på din Google-konto, fjernes fra denne enhed. Hvis du vil bruge dem igen i Chromium, skal du logge ind igen.</translation> <translation id="3962647064319009959">Se, hvordan Chromium beskytter dig</translation> <translation id="3975724895399328945">Om &Google Chrome for Testing</translation> <translation id="3997429360543082038">Om Chromium OS</translation>
diff --git a/chrome/app/resources/chromium_strings_el.xtb b/chrome/app/resources/chromium_strings_el.xtb index e14cdb2..17e7cdbf 100644 --- a/chrome/app/resources/chromium_strings_el.xtb +++ b/chrome/app/resources/chromium_strings_el.xtb
@@ -217,6 +217,7 @@ <translation id="391789666908693569">Η διαχείριση του λογαριασμού σας γίνεται από τον διαχειριστή <ph name="MANAGER_NAME" />. Ο διαχειριστής σας μπορεί να δει και να επεξεργαστεί αυτό το προφίλ προγράμματος περιήγησης Chromium και τα δεδομένα του, όπως σελιδοδείκτες, ιστορικό και κωδικούς πρόσβασης.</translation> <translation id="3941890832296813527">Σφάλμα εγκατάστασης: Το όνομα αρχείου του προγράμματος εγκατάστασης δεν είναι έγκυρο ή δεν υποστηρίζεται.</translation> <translation id="3945058413678539331">Το Chromium προσπαθεί να αντιγράψει κωδικούς πρόσβασης. Για να επιτρέψετε αυτή την ενέργεια, πληκτρολογήστε τον κωδικό πρόσβασης των Windows.</translation> +<translation id="3954172517175569325">Οι κωδικοί πρόσβασης, οι τρόποι πληρωμής και οι διευθύνσεις που αποθηκεύσατε στον Λογαριασμό σας Google θα καταργηθούν από αυτή τη συσκευή. Για να τα χρησιμοποιήσετε ξανά στο Chromium, συνδεθείτε ξανά.</translation> <translation id="3962647064319009959">Μάθετε πώς σας προστατεύει το Chromium</translation> <translation id="3975724895399328945">Σχετικά με το &Google Chrome for Testing</translation> <translation id="3997429360543082038">Σχετικά με το Chromium OS</translation>
diff --git a/chrome/app/resources/chromium_strings_en-GB.xtb b/chrome/app/resources/chromium_strings_en-GB.xtb index 300bdd0..4b67ea3 100644 --- a/chrome/app/resources/chromium_strings_en-GB.xtb +++ b/chrome/app/resources/chromium_strings_en-GB.xtb
@@ -219,6 +219,7 @@ <translation id="391789666908693569">Your account is managed by <ph name="MANAGER_NAME" />. Your administrator can see and edit this Chromium browser profile and its data like bookmarks, history and passwords.</translation> <translation id="3941890832296813527">Install error: The installer filename is invalid or unsupported.</translation> <translation id="3945058413678539331">Chromium is trying to copy passwords. Type your Windows password to allow this.</translation> +<translation id="3954172517175569325">Your passwords, payment methods and addresses that you saved in your Google Account will be removed from this device. To use them again in Chromium, sign back in.</translation> <translation id="3962647064319009959">Learn how Chromium keeps you safe</translation> <translation id="3975724895399328945">About Google Chrome for testing</translation> <translation id="3997429360543082038">About Chromium OS</translation>
diff --git a/chrome/app/resources/chromium_strings_es-419.xtb b/chrome/app/resources/chromium_strings_es-419.xtb index 752d582..71f61576 100644 --- a/chrome/app/resources/chromium_strings_es-419.xtb +++ b/chrome/app/resources/chromium_strings_es-419.xtb
@@ -145,6 +145,7 @@ <translation id="2910007522516064972">Acerca de &Chromium</translation> <translation id="2915996080311180594">Reiniciar más tarde</translation> <translation id="2928420929544864228">Se completó la instalación.</translation> +<translation id="2933336679234709858">Tus datos se encriptan con tu frase de contraseña. Ingrésala para usar y guardar datos de Chromium en tu Cuenta de Google.</translation> <translation id="2945997411976714835">Error de instalación: No se pudo iniciar el proceso del instalador.</translation> <translation id="2970426615109535079">Tu organización administra Chromium</translation> <translation id="2977470724722393594">Chromium está actualizado.</translation>
diff --git a/chrome/app/resources/chromium_strings_es.xtb b/chrome/app/resources/chromium_strings_es.xtb index 46a8b97..d0a1bd89 100644 --- a/chrome/app/resources/chromium_strings_es.xtb +++ b/chrome/app/resources/chromium_strings_es.xtb
@@ -219,6 +219,7 @@ <translation id="391789666908693569">Tu cuenta la gestiona <ph name="MANAGER_NAME" />. Tu administrador puede ver y editar este perfil del navegador Chromium y sus datos, como los marcadores, el historial o las contraseñas.</translation> <translation id="3941890832296813527">Error de instalación: el nombre de archivo del instalador no es válido o no se admite.</translation> <translation id="3945058413678539331">Chromium está intentando copiar contraseñas. Para permitirlo, escribe tu contraseña de Windows.</translation> +<translation id="3954172517175569325">Las contraseñas, los métodos de pago y las direcciones que hayas guardado en tu cuenta de Google se eliminarán de este dispositivo. Para usarlos de nuevo en Chromium, vuelve a iniciar sesión.</translation> <translation id="3962647064319009959">Descubre cómo te protege Chromium</translation> <translation id="3975724895399328945">Información de &Google Chrome for Testing</translation> <translation id="3997429360543082038">Información de ChromiumOS</translation>
diff --git a/chrome/app/resources/chromium_strings_et.xtb b/chrome/app/resources/chromium_strings_et.xtb index 504d9acc..5c00c4a 100644 --- a/chrome/app/resources/chromium_strings_et.xtb +++ b/chrome/app/resources/chromium_strings_et.xtb
@@ -217,6 +217,7 @@ <translation id="391789666908693569">Teie kontot haldab <ph name="MANAGER_NAME" />. Administraator saab seda Chromiumi brauseri profiili ja selle andmeid (nt järjehoidjaid, ajalugu ja paroole) vaadata ning muuta.</translation> <translation id="3941890832296813527">Installimisviga: installiprogrammi failinimi on sobimatu või seda ei toetata.</translation> <translation id="3945058413678539331">Chromium püüab kopeerida paroole. Selle lubamiseks sisestage Windowsi parool.</translation> +<translation id="3954172517175569325">Teie Google'i kontole salvestatud paroolid, makseviisid ja aadressid eemaldatakse sellest seadmest. Selleks et neid Chromiumis uuesti kasutada, logige taas sisse.</translation> <translation id="3962647064319009959">Vaadake, kuidas Chromium teid kaitseb</translation> <translation id="3975724895399328945">&Google Chrome for Testingu teave</translation> <translation id="3997429360543082038">Teave &Chromium OS-i kohta</translation>
diff --git a/chrome/app/resources/chromium_strings_eu.xtb b/chrome/app/resources/chromium_strings_eu.xtb index 0cf1dbe3..9f1449b 100644 --- a/chrome/app/resources/chromium_strings_eu.xtb +++ b/chrome/app/resources/chromium_strings_eu.xtb
@@ -146,6 +146,7 @@ <translation id="2910007522516064972">&Chromium arakatzaileari buruz</translation> <translation id="2915996080311180594">Berrabiarazi geroago</translation> <translation id="2928420929544864228">Instalatu da.</translation> +<translation id="2933336679234709858">Datuak pasaesaldiarekin enkriptatuta daude. Chromium-eko datuak Google-ko kontuan gordetzeko eta erabiltzeko, idatz ezazu.</translation> <translation id="2945997411976714835">Instalazio-errorea: instalatzailearen prozesua ezin izan da hasi.</translation> <translation id="2970426615109535079">Zure erakundeak kudeatzen du Chromium</translation> <translation id="2977470724722393594">Eguneratuta dago Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_fa.xtb b/chrome/app/resources/chromium_strings_fa.xtb index 44db5d78..9ca65d4 100644 --- a/chrome/app/resources/chromium_strings_fa.xtb +++ b/chrome/app/resources/chromium_strings_fa.xtb
@@ -216,6 +216,7 @@ <translation id="391789666908693569"><ph name="MANAGER_NAME" /> حساب شما را مدیریت میکند. سرپرستتان میتواند این نمایه مرورگر Chromium و دادههای آن را (مثل نشانکها، سابقه، و گذرواژهها) ببیند و ویرایش کند.</translation> <translation id="3941890832296813527">خطای نصب: نام فایل نصبکننده نامعتبر است یا از آن پشتیبانی نمیشود.</translation> <translation id="3945058413678539331">Chromium میخواهد گذرواژهها را کپی کند. برای اینکه اجازه دهید این کار انجام شود، گذرواژه Windows خود را تایپ کنید.</translation> +<translation id="3954172517175569325">گذرواژهها، روشهای پرداخت، و نشانیهایی که در «حساب Google» خود ذخیره کردهاید از این دستگاه برداشته خواهد شد. برای استفاده مجدد از آنها در Chromium، دوباره به سیستم وارد شوید.</translation> <translation id="3962647064319009959">ببینید Chromium چگونه ایمنی شما را حفظ میکند</translation> <translation id="3975724895399328945">درباره Google Chrome for Testing</translation> <translation id="3997429360543082038">درباره ChromiumOS</translation>
diff --git a/chrome/app/resources/chromium_strings_fi.xtb b/chrome/app/resources/chromium_strings_fi.xtb index 7fcb6fb..96b28c0 100644 --- a/chrome/app/resources/chromium_strings_fi.xtb +++ b/chrome/app/resources/chromium_strings_fi.xtb
@@ -145,6 +145,7 @@ <translation id="2910007522516064972">Tietoja &Chromiumista</translation> <translation id="2915996080311180594">Uudelleenkäynnistä myöhemmin</translation> <translation id="2928420929544864228">Asennus valmis</translation> +<translation id="2933336679234709858">Datasi salataan tunnuslauseella. Lisää se, niin voit käyttää ja tallentaa Chromium-dataa Google-tililläsi.</translation> <translation id="2945997411976714835">Asennusvirhe: Asennusprosessin aloittaminen ei onnistunut.</translation> <translation id="2970426615109535079">Organisaatiosi ylläpitää Chromiumia</translation> <translation id="2977470724722393594">Chromium on ajan tasalla.</translation> @@ -216,6 +217,7 @@ <translation id="391789666908693569"><ph name="MANAGER_NAME" /> ylläpitää tiliäsi. Järjestelmänvalvoja voi nähdä tämän Chromium-selainprofiilin ja sen datan (esim. kirjanmerkit, historian ja salasanat) sekä muokata niitä.</translation> <translation id="3941890832296813527">Asennusvirhe: Asennusohjelman tiedostonimi on virheellinen, tai sitä ei tueta.</translation> <translation id="3945058413678539331">Chromium yrittää kopioida salasanat. Salli tämä kirjoittamalla Windows-salasanasi.</translation> +<translation id="3954172517175569325">Google-tilille tallennetut salasanat, maksutavat ja osoitteet poistetaan tältä laitteelta. Jos haluat käyttää niitä uudelleen Chromiumissa, kirjaudu takaisin sisään.</translation> <translation id="3962647064319009959">Lue, miten Chromium pitää sinut turvassa</translation> <translation id="3975724895399328945">Tietoa &Google Chrome for Testingistä</translation> <translation id="3997429360543082038">Tietoa Chromium-käyttöjärjestelmästä</translation>
diff --git a/chrome/app/resources/chromium_strings_fil.xtb b/chrome/app/resources/chromium_strings_fil.xtb index ef764e6..acbe56e 100644 --- a/chrome/app/resources/chromium_strings_fil.xtb +++ b/chrome/app/resources/chromium_strings_fil.xtb
@@ -219,6 +219,7 @@ <translation id="391789666908693569">Pinapamahalaan ni <ph name="MANAGER_NAME" /> ang iyong account. Makikita at mae-edit ng iyong administrator ang profile na ito sa Chromium browser at ang data nito gaya ng mga bookmark, history, at mga password.</translation> <translation id="3941890832296813527">Error sa pag-install: Invalid o hindi sinusuportahan ang filename ng installer.</translation> <translation id="3945058413678539331">Sinusubukan ng Chromium na kopyahin ang mga password. I-type ang iyong password sa Windows para payagan ito.</translation> +<translation id="3954172517175569325">Aalisin sa device na ito ang mga password, paraan ng pagbabayad, at address na na-save mo sa iyong Google Account. Para magamit ulit ang mga ito sa Chromium, mag-sign in ulit.</translation> <translation id="3962647064319009959">Alamin kung paano ka pinapanatiling ligtas ng Chromium</translation> <translation id="3975724895399328945">Tungkol sa &Google Chrome na Pang-test</translation> <translation id="3997429360543082038">Tungkol sa ChromiumOS</translation>
diff --git a/chrome/app/resources/chromium_strings_fr-CA.xtb b/chrome/app/resources/chromium_strings_fr-CA.xtb index fae0ab5..8ac6933 100644 --- a/chrome/app/resources/chromium_strings_fr-CA.xtb +++ b/chrome/app/resources/chromium_strings_fr-CA.xtb
@@ -218,6 +218,7 @@ <translation id="391789666908693569">Votre compte est géré par <ph name="MANAGER_NAME" />. Votre administrateur peut voir et modifier ce profil de navigateur Chromium ainsi que ses données telles que les favoris, l'historique et les mots de passe.</translation> <translation id="3941890832296813527">Erreur d'installation : le nom du fichier du programme d'installation n'est pas valide ou n'est pas pris en charge.</translation> <translation id="3945058413678539331">Chromium essaie de copier des mots de passe. Pour autoriser cette action, entrez votre mot de passe Windows.</translation> +<translation id="3954172517175569325">Vos adresses, vos mots de passe et vos modes de paiement que vous avez enregistrés dans votre compte Google seront retirés de cet appareil. Pour les utiliser à nouveau dans Chromium, reconnectez-vous.</translation> <translation id="3962647064319009959">Découvrez comment Chromium assure votre sécurité</translation> <translation id="3975724895399328945">À propos de &Google Chrome for Testing</translation> <translation id="3997429360543082038">À propos de Chromium OS</translation>
diff --git a/chrome/app/resources/chromium_strings_fr.xtb b/chrome/app/resources/chromium_strings_fr.xtb index fba40b4..a189b3b 100644 --- a/chrome/app/resources/chromium_strings_fr.xtb +++ b/chrome/app/resources/chromium_strings_fr.xtb
@@ -217,6 +217,7 @@ <translation id="391789666908693569">Votre compte est géré par <ph name="MANAGER_NAME" />. Votre administrateur peut afficher et modifier ce profil de navigateur Chromium et ses données, comme les favoris, l'historique et les mots de passe.</translation> <translation id="3941890832296813527">Erreur d'installation : le nom de fichier du programme d'installation est incorrect ou non compatible.</translation> <translation id="3945058413678539331">Chromium tente de copier les mots de passe. Saisissez votre mot de passe Windows pour autoriser cette opération.</translation> +<translation id="3954172517175569325">Les mots de passe, modes de paiement et adresses que vous avez enregistrés dans votre compte Google seront supprimés de cet appareil. Pour les utiliser de nouveau dans Chromium, reconnectez-vous.</translation> <translation id="3962647064319009959">Découvrir comment Chromium vous protège</translation> <translation id="3975724895399328945">À propos de &Google Chrome for Testing</translation> <translation id="3997429360543082038">À propos de Chromium OS</translation>
diff --git a/chrome/app/resources/chromium_strings_gl.xtb b/chrome/app/resources/chromium_strings_gl.xtb index 9d3bed72..e5fd3f6 100644 --- a/chrome/app/resources/chromium_strings_gl.xtb +++ b/chrome/app/resources/chromium_strings_gl.xtb
@@ -147,6 +147,7 @@ <translation id="2910007522516064972">Acerca de &Chromium</translation> <translation id="2915996080311180594">Reiniciar máis tarde</translation> <translation id="2928420929544864228">Completouse a instalación.</translation> +<translation id="2933336679234709858">Os teus datos están encriptados cunha frase de acceso. Escríbea para usar e gardar os datos de Chromium na túa Conta de Google.</translation> <translation id="2945997411976714835">Erro de instalación: Non se puido iniciar o proceso do instalador.</translation> <translation id="2970426615109535079">A túa organización xestiona Chromium</translation> <translation id="2977470724722393594">Chromium está actualizado</translation> @@ -218,6 +219,7 @@ <translation id="391789666908693569"><ph name="MANAGER_NAME" /> xestiona a túa conta. O teu administrador pode consultar e editar este perfil do navegador Chromium e os seus datos (por exemplo, os marcadores, o historial ou os contrasinais).</translation> <translation id="3941890832296813527">Erro de instalación: O nome de ficheiro do instalador non é válido ou non se admite.</translation> <translation id="3945058413678539331">Chromium está tentando copiar os contrasinais. Escribe o teu contrasinal de Windows para permitir esta acción.</translation> +<translation id="3954172517175569325">Os contrasinais, métodos de pago e enderezos que gardes na túa Conta de Google quitaranse deste dispositivo. Para usalos de novo en Chromium, volve iniciar sesión.</translation> <translation id="3962647064319009959">Descubre como te protexe Chromium</translation> <translation id="3975724895399328945">Sobre &Google Chrome for Testing</translation> <translation id="3997429360543082038">Acerca de Chromium OS</translation>
diff --git a/chrome/app/resources/chromium_strings_gu.xtb b/chrome/app/resources/chromium_strings_gu.xtb index 15a0af7..cd66fbd3 100644 --- a/chrome/app/resources/chromium_strings_gu.xtb +++ b/chrome/app/resources/chromium_strings_gu.xtb
@@ -219,6 +219,7 @@ <translation id="391789666908693569"><ph name="MANAGER_NAME" /> દ્વારા તમારું એકાઉન્ટ મેનેજ કરવામાં આવે છે. તમારા ઍડમિનિસ્ટ્રેટર આ Chromium બ્રાઉઝરની પ્રોફાઇલ અને બુકમાર્ક, ઇતિહાસ તથા પાસવર્ડ જેવો તેનો ડેટા જોઈ શકે છે અને તેમાં ફેરફાર કરી શકે છે.</translation> <translation id="3941890832296813527">ઇન્સ્ટૉલ કરવામાં ભૂલ: ઇન્સ્ટૉલરની ફાઇલનું નામ અમાન્ય અથવા અનસપોર્ટેડ છે.</translation> <translation id="3945058413678539331">Chromium પાસવર્ડની કૉપિ કરવાનો પ્રયાસ કરી રહ્યું છે. આની મંજૂરી આપવા માટે તમારો Windows પાસવર્ડ લખો.</translation> +<translation id="3954172517175569325">તમે તમારા Google એકાઉન્ટમાં સાચવેલા તમારા પાસવર્ડ, ચુકવણી પદ્ધતિઓ અને સરનામા આ ડિવાઇસમાંથી કાઢી નાખવામાં આવશે. Chromiumમાં તેનો ફરીથી ઉપયોગ કરવા માટે, પાછું સાઇન ઇન કરો.</translation> <translation id="3962647064319009959">Chromiumની તમને સલામત રાખવાની રીત વિશે જાણો</translation> <translation id="3975724895399328945">Google Chrome for Testing વિશે</translation> <translation id="3997429360543082038">ChromiumOS વિશે</translation>
diff --git a/chrome/app/resources/chromium_strings_hi.xtb b/chrome/app/resources/chromium_strings_hi.xtb index a5315b8..7110483 100644 --- a/chrome/app/resources/chromium_strings_hi.xtb +++ b/chrome/app/resources/chromium_strings_hi.xtb
@@ -144,6 +144,7 @@ <translation id="2910007522516064972">&क्रोमियम के बारे में</translation> <translation id="2915996080311180594">बाद में रीस्टार्ट करें</translation> <translation id="2928420929544864228">इंस्टॉल हो गया.</translation> +<translation id="2933336679234709858">आपका डेटा, लंबे पासवर्ड से एन्क्रिप्ट यानी सुरक्षित किया गया है. अपने Google खाते में, Chromium का डेटा सेव करने और उसका इस्तेमाल करने के लिए यह लंबा पासवर्ड डालें.</translation> <translation id="2945997411976714835">इंस्टॉल करने में गड़बड़ी हुई: इंस्टॉल करने की प्रोसेस शुरू नहीं हो सकी.</translation> <translation id="2970426615109535079">आपका संगठन Chromium मैनेज करता है</translation> <translation id="2977470724722393594">क्रोमियम अप टू डेट है</translation>
diff --git a/chrome/app/resources/chromium_strings_hr.xtb b/chrome/app/resources/chromium_strings_hr.xtb index cd397b5..f95395ae 100644 --- a/chrome/app/resources/chromium_strings_hr.xtb +++ b/chrome/app/resources/chromium_strings_hr.xtb
@@ -217,6 +217,7 @@ <translation id="391789666908693569">Vašim računom upravlja <ph name="MANAGER_NAME" />. Vaš administrator može pregledavati i uređivati ovaj profil preglednika Chromium i njegove podatke, kao što su oznake, povijest i zaporke.</translation> <translation id="3941890832296813527">Pogreška pri instalaciji: naziv datoteke programa za instalaciju nije važeći ili nije podržan.</translation> <translation id="3945058413678539331">Chromium pokušava kopirati zaporke. Upišite svoju zaporku za Windows da biste to dopustili.</translation> +<translation id="3954172517175569325">Zaporke, načini plaćanja i adrese koje ste spremili na Google računu uklonit će se s ovog uređaja. Da biste ih ponovo upotrebljavali u Chromiumu, ponovo se prijavite.</translation> <translation id="3962647064319009959">Saznajte kako vas Chromium štiti</translation> <translation id="3975724895399328945">O verziji &Google Chrome for Testing</translation> <translation id="3997429360543082038">O Chromium OS-u</translation>
diff --git a/chrome/app/resources/chromium_strings_hu.xtb b/chrome/app/resources/chromium_strings_hu.xtb index 82ac103..66d60f8c 100644 --- a/chrome/app/resources/chromium_strings_hu.xtb +++ b/chrome/app/resources/chromium_strings_hu.xtb
@@ -217,6 +217,7 @@ <translation id="391789666908693569">Az Ön fiókkezelője: <ph name="MANAGER_NAME" />. Rendszergazdája láthatja és szerkesztheti ezt a Chromium-böngészőprofilt és az adatait (például a könyvjelzőket, az előzményeket és a jelszavakat).</translation> <translation id="3941890832296813527">Telepítési hiba: A telepítő fájlneve érvénytelen vagy nem támogatott.</translation> <translation id="3945058413678539331">A Chromium megpróbálkozik a jelszavak másolásával. Ennek engedélyezéséhez írja be Windows-jelszavát.</translation> +<translation id="3954172517175569325">A Google-fiókjába mentett jelszavai, fizetési módjai és címei el lesznek távolítva erről az eszközről. Ha újra használni szeretné őket a Chromiumban, jelentkezzen be újra.</translation> <translation id="3962647064319009959">További információ arról, hogy miként gondoskodik a Chromium az Ön biztonságáról</translation> <translation id="3975724895399328945">A Google Chrome for Testing névjegye</translation> <translation id="3997429360543082038">A ChromiumOS névjegye</translation>
diff --git a/chrome/app/resources/chromium_strings_id.xtb b/chrome/app/resources/chromium_strings_id.xtb index 7b21b98..7ed5283 100644 --- a/chrome/app/resources/chromium_strings_id.xtb +++ b/chrome/app/resources/chromium_strings_id.xtb
@@ -217,6 +217,7 @@ <translation id="391789666908693569">Akun Anda dikelola oleh <ph name="MANAGER_NAME" />. Administrator dapat melihat dan mengedit profil browser Chromium ini beserta datanya seperti bookmark, histori, dan sandi.</translation> <translation id="3941890832296813527">Error penginstalan: Nama file penginstal tidak valid atau tidak didukung.</translation> <translation id="3945058413678539331">Chromium mencoba menyalin sandi. Ketik sandi Windows Anda untuk mengizinkannya.</translation> +<translation id="3954172517175569325">Sandi, metode pembayaran, dan alamat Anda yang disimpan di Akun Google Anda akan dihapus dari perangkat ini. Untuk menggunakannya lagi di Chromium, login kembali.</translation> <translation id="3962647064319009959">Pelajari cara Chromium menjaga keamanan Anda</translation> <translation id="3975724895399328945">Tentang &Google Chrome for Testing</translation> <translation id="3997429360543082038">Tentang ChromiumOS</translation>
diff --git a/chrome/app/resources/chromium_strings_is.xtb b/chrome/app/resources/chromium_strings_is.xtb index 00212b47..4d0ab39 100644 --- a/chrome/app/resources/chromium_strings_is.xtb +++ b/chrome/app/resources/chromium_strings_is.xtb
@@ -219,6 +219,7 @@ <translation id="391789666908693569">Reikningnum þínum er stjórnað af <ph name="MANAGER_NAME" />. Stjórnandinn þinn getur séð og breytt þessum Chromium vafraprófíl og gögnum hans á borð við bókamerki, feril og aðgangsorð.</translation> <translation id="3941890832296813527">Uppsetningarvilla: Skráarheiti uppsetningarforrits er ógilt eða ekki stutt.</translation> <translation id="3945058413678539331">Chromium er að reyna að afrita aðgangsorð. Sláðu inn Windows-aðgangsorðið þitt til að leyfa það.</translation> +<translation id="3954172517175569325">Aðgangsorðin þín, greiðslumátar og heimilisföng sem þú vistaðir á Google-reikningnum þínum verða fjarlægð úr þessu tæki. Til að nota þau aftur í Chromium skaltu skrá þig aftur inn.</translation> <translation id="3962647064319009959">Kynntu þér hvernig Chromium gætir að öryggi þínu</translation> <translation id="3975724895399328945">Um &Google Chrome for Testing</translation> <translation id="3997429360543082038">Um ChromiumOS</translation>
diff --git a/chrome/app/resources/chromium_strings_km.xtb b/chrome/app/resources/chromium_strings_km.xtb index 7e91e2a9..f3b5095f 100644 --- a/chrome/app/resources/chromium_strings_km.xtb +++ b/chrome/app/resources/chromium_strings_km.xtb
@@ -219,6 +219,7 @@ <translation id="391789666908693569">គណនីរបស់អ្នកស្ថិតក្រោមការគ្រប់គ្រងរបស់ <ph name="MANAGER_NAME" />។ អ្នកគ្រប់គ្រងរបស់អ្នកអាចមើល និងកែកម្រងព័ត៌មានកម្មវិធីរុករកតាមអ៊ីនធឺណិត Chromium នេះ និងទិន្នន័យរបស់វា ដូចជាចំណាំ ប្រវត្តិ និងពាក្យសម្ងាត់។</translation> <translation id="3941890832296813527">បញ្ហាក្នុងការដំឡើង៖ ឈ្មោះឯកសារកម្មវិធីដំឡើងមិនត្រឹមត្រូវ ឬមិនអាចប្រើបាន។</translation> <translation id="3945058413678539331">Chromium កំពុងព្យាយាមចម្លងពាក្យសម្ងាត់។ សូមវាយបញ្ចូលពាក្យសម្ងាត់ Windows របស់អ្នក ដើម្បីអនុញ្ញាតការចម្លងនេះ។</translation> +<translation id="3954172517175569325">ពាក្យសម្ងាត់ វិធីបង់ប្រាក់ និងអាសយដ្ឋានរបស់អ្នកដែលអ្នកបានរក្សាទុកនៅក្នុងគណនី Google នឹងត្រូវបានដកចេញពីឧបករណ៍នេះ។ ដើម្បីប្រើព័ត៌មានទាំងនេះម្ដងទៀតនៅក្នុង Chromium សូមចូលគណនីវិញ។</translation> <translation id="3962647064319009959">ស្វែងយល់អំពីរបៀបដែល Chromium រក្សាសុវត្ថិភាពរបស់អ្នក</translation> <translation id="3975724895399328945">អំពី &Google Chrome for Testing</translation> <translation id="3997429360543082038">អំពី ChromiumOS</translation>
diff --git a/chrome/app/resources/chromium_strings_ko.xtb b/chrome/app/resources/chromium_strings_ko.xtb index 5b1ebc5..0eb6223 100644 --- a/chrome/app/resources/chromium_strings_ko.xtb +++ b/chrome/app/resources/chromium_strings_ko.xtb
@@ -218,6 +218,7 @@ <translation id="391789666908693569">내 계정은 <ph name="MANAGER_NAME" />에서 관리합니다. 관리자가 이 Chromium 브라우저 프로필과 북마크, 방문 기록, 비밀번호 등의 데이터를 보고 수정할 수 있습니다.</translation> <translation id="3941890832296813527">설치 오류: 설치 프로그램 파일 이름이 잘못되었거나 지원되지 않습니다.</translation> <translation id="3945058413678539331">Chromium에서 비밀번호를 복사하려고 합니다. 허용하려면 Windows 비밀번호를 입력하세요.</translation> +<translation id="3954172517175569325">Google 계정에 저장된 비밀번호, 결제 수단, 주소가 이 기기에서 삭제됩니다. Chromium에서 다시 사용하려면 다시 로그인하세요</translation> <translation id="3962647064319009959">Chromium이 사용자를 안전하게 보호하는 방법 알아보기</translation> <translation id="3975724895399328945">&Google Chrome for Testing 정보</translation> <translation id="3997429360543082038">ChromiumOS 정보</translation>
diff --git a/chrome/app/resources/chromium_strings_ky.xtb b/chrome/app/resources/chromium_strings_ky.xtb index 5762e70..1166464 100644 --- a/chrome/app/resources/chromium_strings_ky.xtb +++ b/chrome/app/resources/chromium_strings_ky.xtb
@@ -147,6 +147,7 @@ <translation id="2910007522516064972">&Chromium жөнүндө</translation> <translation id="2915996080311180594">Кийинчерээк өчүрүп күйгүзүү</translation> <translation id="2928420929544864228">Орнотулду.</translation> +<translation id="2933336679234709858">Маалыматыңыз сыр сүйлөм менен шифрленген. Google аккаунтуңузга Chromium маалыматын сактоо жана колдонуу үчүн сыр сүйлөмдү киргизиңиз.</translation> <translation id="2945997411976714835">Орнотуу катасы: Орнотуу процесси башталган жок.</translation> <translation id="2970426615109535079">Chromium'ду уюмуңуз тескейт</translation> <translation id="2977470724722393594">Chromium жаңырган</translation>
diff --git a/chrome/app/resources/chromium_strings_lo.xtb b/chrome/app/resources/chromium_strings_lo.xtb index cf32bf2..9bf340c 100644 --- a/chrome/app/resources/chromium_strings_lo.xtb +++ b/chrome/app/resources/chromium_strings_lo.xtb
@@ -219,6 +219,7 @@ <translation id="391789666908693569">ບັນຊີຂອງທ່ານຖືກຈັດການໂດຍ <ph name="MANAGER_NAME" />. ຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານສາມາດເບິ່ງ ແລະ ແກ້ໄຂໂປຣໄຟລ໌ໂປຣແກຣມທ່ອງເວັບ Chromium ນີ້ ແລະ ຂໍ້ມູນຂອງມັນໄດ້ ເຊັ່ນ: ບຸກມາກ, ປະຫວັດ ແລະ ລະຫັດຜ່ານ.</translation> <translation id="3941890832296813527">ຂໍ້ຜິດພາດໃນການຕິດຕັ້ງ: ຊື່ໄຟລ໌ຂອງຕົວຕິດຕັ້ງບໍ່ຖືກຕ້ອງ ຫຼື ລະບົບບໍ່ຮອງຮັບ.</translation> <translation id="3945058413678539331">Chromium ກໍາລັງພະຍາຍາມສຳເນົາລະຫັດຜ່ານ. ພິມລະຫັດຜ່ານ Windows ຂອງທ່ານ ເພື່ອອະນຸຍາດໃຫ້ສຳເນົາໄດ້.</translation> +<translation id="3954172517175569325">ລະບົບຈະລຶບລະຫັດຜ່ານ, ວິທີການຈ່າຍເງິນ ແລະ ທີ່ຢູ່ທີ່ທ່ານບັນທຶກໄວ້ໃນບັນຊີ Google ຂອງທ່ານອອກຈາກອຸປະກອນນີ້. ເພື່ອໃຊ້ຂໍ້ມູນເຫຼົ່ານີ້ໃນ Chromium, ໃຫ້ເຂົ້າສູ່ລະບົບອີກຄັ້ງ.</translation> <translation id="3962647064319009959">ສຶກສາວິທີການທີ່ Chromium ຮັກສາຄວາມປອດໄພໃຫ້ທ່ານ</translation> <translation id="3975724895399328945">ກ່ຽວກັບ Google Chrome ສຳລັບການທົດສອບ</translation> <translation id="3997429360543082038">ກ່ຽວກັບ ChromiumOS</translation>
diff --git a/chrome/app/resources/chromium_strings_mk.xtb b/chrome/app/resources/chromium_strings_mk.xtb index 7b94d826..d7707532 100644 --- a/chrome/app/resources/chromium_strings_mk.xtb +++ b/chrome/app/resources/chromium_strings_mk.xtb
@@ -147,6 +147,7 @@ <translation id="2910007522516064972">За &Chromium</translation> <translation id="2915996080311180594">Рестартирај подоцна</translation> <translation id="2928420929544864228">Инсталирањето заврши.</translation> +<translation id="2933336679234709858">Вашите податоци се шифрирани со вашата лозинка. Внесете ја за да користите и зачувувате податоци од Chromium во вашата сметка на Google.</translation> <translation id="2945997411976714835">Грешка при инсталирање: процесот на инсталаторот не можеше да започне.</translation> <translation id="2970426615109535079">Вашата организација управува со Chromium</translation> <translation id="2977470724722393594">Chromium е ажуриран</translation>
diff --git a/chrome/app/resources/chromium_strings_ml.xtb b/chrome/app/resources/chromium_strings_ml.xtb index bed575a3..113c73a 100644 --- a/chrome/app/resources/chromium_strings_ml.xtb +++ b/chrome/app/resources/chromium_strings_ml.xtb
@@ -219,6 +219,7 @@ <translation id="391789666908693569">നിങ്ങളുടെ അക്കൗണ്ട് മാനേജ് ചെയ്യുന്നത് <ph name="MANAGER_NAME" /> ആണ്. നിങ്ങളുടെ അഡ്മിന് ഈ Chromium ബ്രൗസർ പ്രൊഫൈലും ബുക്ക്മാർക്കുകൾ, ചരിത്രം, പാസ്വേഡുകൾ എന്നിവ പോലുള്ള അതിലെ ഡാറ്റയും കാണാനും എഡിറ്റ് ചെയ്യാനുമാകും.</translation> <translation id="3941890832296813527">ഇൻസ്റ്റാൾ ചെയ്യുന്നതിൽ പിശക്: ഇൻസ്റ്റാളർ ഫയൽ നാമം അസാധുവാണ് അല്ലെങ്കിൽ പിന്തുണയില്ല.</translation> <translation id="3945058413678539331">പാസ്വേഡുകൾ പകർത്താൻ Chromium ശ്രമിക്കുന്നു. ഇത് അനുവദിക്കാൻ നിങ്ങളുടെ Windows പാസ്വേഡ് നൽകുക.</translation> +<translation id="3954172517175569325">Google Account-ൽ സംരക്ഷിച്ചിരിക്കുന്ന നിങ്ങളുടെ പാസ്വേഡുകൾ, പേയ്മെന്റ് രീതികൾ, വിലാസങ്ങൾ എന്നിവ ഈ ഉപകരണത്തിൽ നിന്ന് നീക്കം ചെയ്യും. Chromium-ൽ അവ വീണ്ടും ഉപയോഗിക്കാൻ, വീണ്ടും സൈൻ ഇൻ ചെയ്യുക.</translation> <translation id="3962647064319009959">Chromium നിങ്ങളെ എങ്ങനെ സുരക്ഷിതരായി സൂക്ഷിക്കുന്നുവെന്ന് അറിയുക</translation> <translation id="3975724895399328945">&Google Chrome for Testing-നെക്കുറിച്ച്</translation> <translation id="3997429360543082038">ChromiumOS-നെ കുറിച്ച്</translation>
diff --git a/chrome/app/resources/chromium_strings_mn.xtb b/chrome/app/resources/chromium_strings_mn.xtb index 26a4c709..687fd5d 100644 --- a/chrome/app/resources/chromium_strings_mn.xtb +++ b/chrome/app/resources/chromium_strings_mn.xtb
@@ -217,6 +217,7 @@ <translation id="391789666908693569">Таны бүртгэлийг <ph name="MANAGER_NAME" /> удирддаг. Танай администратор энэ Chromium хөтчийн профайл болон үүний хавчуурга, түүх, нууц үг зэрэг өгөгдлийг харах болон засах боломжтой.</translation> <translation id="3941890832296813527">Суулгах үед алдаа гарлаа: Суулгагчийн файлын нэр буруу эсвэл дэмжигдээгүй.</translation> <translation id="3945058413678539331">Chromium нь нууц үгс хуулахыг оролдож байна. Үүнийг зөвшөөрөхийн тулд Windows-н нууц үгээ бичнэ үү.</translation> +<translation id="3954172517175569325">Таны Google Бүртгэлдээ хадгалсан нууц үг, төлбөрийн хэрэгсэл, хаягуудыг энэ төхөөрөмжөөс хасна. Тэдгээрийг Chromium-д дахин ашиглахын тулд буцаж нэвтэрнэ үү.</translation> <translation id="3962647064319009959">Chromium таныг хэрхэн аюулгүй байлгадаг болохыг мэдэж авна уу</translation> <translation id="3975724895399328945">&Google Chrome for Testing-н тухай</translation> <translation id="3997429360543082038">ChromiumOS-н тухай</translation>
diff --git a/chrome/app/resources/chromium_strings_ms.xtb b/chrome/app/resources/chromium_strings_ms.xtb index b5659854..407acb2 100644 --- a/chrome/app/resources/chromium_strings_ms.xtb +++ b/chrome/app/resources/chromium_strings_ms.xtb
@@ -217,6 +217,7 @@ <translation id="391789666908693569">Akaun anda diurus oleh <ph name="MANAGER_NAME" />. Pentadbir anda boleh melihat dan mengedit profil penyemak imbas Chromium ini dan datanya seperti penanda halaman, sejarah dan kata laluan.</translation> <translation id="3941890832296813527">Ralat pemasangan: Nama fail pemasang tidak sah atau tidak disokong.</translation> <translation id="3945058413678539331">Chromium cuba menyalin kata laluan. Taip kata laluan Windows anda untuk membenarkan penyalinan.</translation> +<translation id="3954172517175569325">Kata laluan, kaedah pembayaran dan alamat anda yang anda simpan dalam Google Account anda akan dialih keluar daripada peranti ini. Untuk menggunakan maklumat itu semula dalam Chromium, log masuk semula.</translation> <translation id="3962647064319009959">Ketahui tentang cara Chromium memastikan anda selamat</translation> <translation id="3975724895399328945">Perihal &Google Chrome for Testing</translation> <translation id="3997429360543082038">Perihal Chromium OS</translation>
diff --git a/chrome/app/resources/chromium_strings_my.xtb b/chrome/app/resources/chromium_strings_my.xtb index 86d6f89..1e6b08a 100644 --- a/chrome/app/resources/chromium_strings_my.xtb +++ b/chrome/app/resources/chromium_strings_my.xtb
@@ -220,6 +220,7 @@ <translation id="391789666908693569">သင့်အကောင့်ကို <ph name="MANAGER_NAME" /> က စီမံခန့်ခွဲသည်။ သင်၏စီမံခန့်ခွဲသူက ဤ Chromium ဘရောင်ဇာပရိုဖိုင်နှင့် လိပ်စာ၊ မှတ်တမ်းနှင့် စကားဝှက်များ ကဲ့သို့သော ၎င်း၏ဒေတာများကို ကြည့်နိုင်၊ ပြင်ဆင်နိုင်သည်။</translation> <translation id="3941890832296813527">ထည့်သွင်းမှုအမှား- ထည့်သွင်းစနစ်ဖိုင်အမည် မမှန်ပါ (သို့) ပံ့ပိုးမထားပါ။</translation> <translation id="3945058413678539331">Chromium သည် စကားဝှက်များ မိတ္တူကူးရန် ကြိုးစာနေသည်။ ၎င်းကို ခွင့်ပြုရန် သင်၏ Windows စကားဝှက်ကို ရိုက်ထည့်ပါ။</translation> +<translation id="3954172517175569325">သင်၏ Google Account တွင် သိမ်းထားသော စကားဝှက်၊ ငွေပေးချေနည်းလမ်းနှင့် လိပ်စာများကို ဤစက်မှ ဖယ်ရှားပါမည်။ Chromium တွင် ၎င်းတို့ကို သုံးရန်အတွက် ပြန်လည်လက်မှတ်ထိုးဝင်ပါ။</translation> <translation id="3962647064319009959">Chromium က သင်ဘေးကင်းစေရန် လုပ်ဆောင်ပုံကို လေ့လာခြင်း</translation> <translation id="3975724895399328945">&Google Chrome for Testing အကြောင်း</translation> <translation id="3997429360543082038">ChromiumOS အကြောင်း</translation>
diff --git a/chrome/app/resources/chromium_strings_nl.xtb b/chrome/app/resources/chromium_strings_nl.xtb index 34c6f8a4..12a132e1 100644 --- a/chrome/app/resources/chromium_strings_nl.xtb +++ b/chrome/app/resources/chromium_strings_nl.xtb
@@ -218,6 +218,7 @@ <translation id="391789666908693569">Je account wordt beheerd door <ph name="MANAGER_NAME" />. Je beheerder kan dit Chromium-browserprofiel en de bijbehorende gegevens (zoals bookmarks, geschiedenis en wachtwoorden) bekijken en bewerken.</translation> <translation id="3941890832296813527">Installatiefout: De bestandsnaam van het installatieprogramma is ongeldig of wordt niet ondersteund.</translation> <translation id="3945058413678539331">Chromium probeert wachtwoorden te kopiëren. Geef je Windows-wachtwoord op om dit toe te staan.</translation> +<translation id="3954172517175569325">De wachtwoorden, betaalmethoden en adressen die je hebt opgeslagen in je Google-account, worden verwijderd van dit apparaat. Log opnieuw in om ze weer te gebruiken in Chromium.</translation> <translation id="3962647064319009959">Meer informatie over hoe Chromium je beschermt</translation> <translation id="3975724895399328945">Over &Google Chrome for Testing</translation> <translation id="3997429360543082038">Over Chromium OS</translation>
diff --git a/chrome/app/resources/chromium_strings_no.xtb b/chrome/app/resources/chromium_strings_no.xtb index 0112a85..cc9f62c 100644 --- a/chrome/app/resources/chromium_strings_no.xtb +++ b/chrome/app/resources/chromium_strings_no.xtb
@@ -217,6 +217,7 @@ <translation id="391789666908693569">Kontoen din administreres av <ph name="MANAGER_NAME" />. Administratoren kan se og redigere denne Chromium-nettleserprofilen og tilhørende data, som bokmerker, logg og passord.</translation> <translation id="3941890832296813527">Installasjonsfeil: Navnet på installasjonsprogrammet er ugyldig eller støttes ikke.</translation> <translation id="3945058413678539331">Chromium prøver å kopiere passord. Skriv inn Windows-passordet ditt for å tillate dette.</translation> +<translation id="3954172517175569325">Passordene, betalingsmåtene og adressene du har lagret i Google-kontoen din, blir fjernet fra denne enheten. For å bruke dem i Chromium igjen, logg på igjen.</translation> <translation id="3962647064319009959">Finn ut hvordan Chromium holder deg trygg</translation> <translation id="3975724895399328945">Om &Google Chrome for testing</translation> <translation id="3997429360543082038">Om ChromiumOS</translation>
diff --git a/chrome/app/resources/chromium_strings_or.xtb b/chrome/app/resources/chromium_strings_or.xtb index 78c5998..69dbbe7 100644 --- a/chrome/app/resources/chromium_strings_or.xtb +++ b/chrome/app/resources/chromium_strings_or.xtb
@@ -146,6 +146,7 @@ <translation id="2910007522516064972">&Chromium ବିଷୟରେ</translation> <translation id="2915996080311180594">ପରେ ରିଷ୍ଟାର୍ଟ କରନ୍ତୁ</translation> <translation id="2928420929544864228">ଇନଷ୍ଟଲେସନ ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଛି।</translation> +<translation id="2933336679234709858">ଆପଣଙ୍କ ପାସଫ୍ରେଜ ମାଧ୍ୟମରେ ଆପଣଙ୍କ ଡାଟାକୁ ଏନକ୍ରିପ୍ଟ କରାଯାଇଛି। ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟରେ Chromium ଡାଟା ବ୍ୟବହାର ଏବଂ ସେଭ କରିବା ପାଇଁ ଏହାକୁ ଲେଖନ୍ତୁ।</translation> <translation id="2945997411976714835">ଇନଷ୍ଟଲ କରିବାରେ ତ୍ରୁଟି: ଇନଷ୍ଟଲର ପ୍ରକ୍ରିୟା ଆରମ୍ଭ ହେବାରେ ବିଫଳ ହୋଇଛି।</translation> <translation id="2970426615109535079">ଆପଣଙ୍କ ସଂସ୍ଥା Chromiumକୁ ପରିଚାଳନା କରେ</translation> <translation id="2977470724722393594">Chromium ଅପ୍-ଟୁ-ଡେଟ୍ ଅଛି</translation>
diff --git a/chrome/app/resources/chromium_strings_pa.xtb b/chrome/app/resources/chromium_strings_pa.xtb index fb4e953..76271b0f 100644 --- a/chrome/app/resources/chromium_strings_pa.xtb +++ b/chrome/app/resources/chromium_strings_pa.xtb
@@ -147,6 +147,7 @@ <translation id="2910007522516064972">&Chromium ਬਾਰੇ</translation> <translation id="2915996080311180594">ਬਾਅਦ ਵਿੱਚ ਮੁੜ-ਸ਼ੁਰੂ ਕਰੋ</translation> <translation id="2928420929544864228">ਸਥਾਪਨਾ ਪੂਰੀ ਹੋਈ।</translation> +<translation id="2933336679234709858">ਤੁਹਾਡਾ ਡਾਟਾ ਤੁਹਾਡੇ ਪਾਸਫਰੇਜ਼ ਨਾਲ ਇਨਕ੍ਰਿਪਟ ਕੀਤਾ ਗਿਆ ਹੈ। ਆਪਣੇ Google ਖਾਤੇ ਵਿੱਚ Chromium ਡਾਟੇ ਨੂੰ ਵਰਤਣ ਅਤੇ ਰੱਖਿਅਤ ਕਰਨ ਲਈ ਇਸਨੂੰ ਦਾਖਲ ਕਰੋ।</translation> <translation id="2945997411976714835">ਸਥਾਪਤ ਕਰਨ ਵਿੱਚ ਗੜਬੜ: ਸਥਾਪਨਾਕਾਰ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ।</translation> <translation id="2970426615109535079">Chromium ਦਾ ਪ੍ਰਬੰਧਨ ਤੁਹਾਡੀ ਸੰਸਥਾ ਕਰਦੀ ਹੈ</translation> <translation id="2977470724722393594">Chromium ਅੱਪ ਟੂ ਡੇਟ ਹੈ</translation> @@ -218,6 +219,7 @@ <translation id="391789666908693569">ਤੁਹਾਡਾ ਖਾਤਾ <ph name="MANAGER_NAME" /> ਵੱਲੋਂ ਪ੍ਰਬੰਧਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਤੁਹਾਡਾ ਪ੍ਰਸ਼ਾਸਕ ਇਸ Chromium ਬ੍ਰਾਊਜ਼ਰ ਪ੍ਰੋਫਾਈਲ ਅਤੇ ਇਸਦੇ ਡਾਟੇ ਨੂੰ ਦੇਖ ਸਕਦਾ ਹੈ ਅਤੇ ਇਸਦਾ ਸੰਪਾਦਨ ਕਰ ਸਕਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਬੁੱਕਮਾਰਕ, ਇਤਿਹਾਸ ਅਤੇ ਪਾਸਵਰਡ।</translation> <translation id="3941890832296813527">ਸਥਾਪਤ ਕਰਨ ਵਿੱਚ ਗੜਬੜ: ਸਥਾਪਨਾਕਾਰ ਫ਼ਾਈਲ ਨਾਮ ਅਵੈਧ ਜਾਂ ਅਸਮਰਥਿਤ ਹੈ।</translation> <translation id="3945058413678539331">Chromium ਪਾਸਵਰਡਾਂ ਨੂੰ ਕਾਪੀ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਿਹਾ ਹੈ। ਇਹ ਕਰਨ ਦੇਣ ਲਈ ਆਪਣਾ ਵਿੰਡੋ ਪਾਸਵਰਡ ਟਾਈਪ ਕਰੋ।</translation> +<translation id="3954172517175569325">ਤੁਹਾਡੇ Google ਖਾਤੇ ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤੇ ਪਾਸਵਰਡਾਂ, ਭੁਗਤਾਨ ਵਿਧੀਆਂ ਅਤੇ ਪਤਿਆਂ ਨੂੰ ਇਸ ਡੀਵਾਈਸ ਤੋਂ ਹਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ। ਉਨ੍ਹਾਂ ਨੂੰ Chromium ਵਿੱਚ ਦੁਬਾਰਾ ਵਰਤਣ ਲਈ, ਵਾਪਸ ਸਾਈਨ-ਇਨ ਕਰੋ।</translation> <translation id="3962647064319009959">ਜਾਣੋ ਕਿ Chromium ਤੁਹਾਨੂੰ ਕਿਵੇਂ ਸੁਰੱਖਿਅਤ ਰੱਖਦਾ ਹੈ</translation> <translation id="3975724895399328945">Google Chrome for Testing ਬਾਰੇ</translation> <translation id="3997429360543082038">ChromiumOS ਬਾਰੇ</translation>
diff --git a/chrome/app/resources/chromium_strings_ru.xtb b/chrome/app/resources/chromium_strings_ru.xtb index 138b5e9..a389aa0 100644 --- a/chrome/app/resources/chromium_strings_ru.xtb +++ b/chrome/app/resources/chromium_strings_ru.xtb
@@ -214,6 +214,7 @@ <translation id="391789666908693569">Вашим аккаунтом управляет <ph name="MANAGER_NAME" />. Администратор может просматривать и изменять этот профиль Chromium и данные в нем, включая закладки, историю и пароли.</translation> <translation id="3941890832296813527">Произошла ошибка. Название файла установщика недействительно или не поддерживается.</translation> <translation id="3945058413678539331">Chromium пытается скопировать пароли. Чтобы разрешить это действие, введите свой пароль Windows.</translation> +<translation id="3954172517175569325">Пароли, способы оплаты и адреса, которые вы сохранили в аккаунте Google, будут удалены с этого устройства. Чтобы снова использовать их в Chromium, потребуется войти в аккаунт.</translation> <translation id="3962647064319009959">Как Chromium обеспечивает безопасность</translation> <translation id="3975724895399328945">О &Google Chrome для тестирования</translation> <translation id="3997429360543082038">О Chromium OS</translation>
diff --git a/chrome/app/resources/chromium_strings_si.xtb b/chrome/app/resources/chromium_strings_si.xtb index c392fe56..283ffdb 100644 --- a/chrome/app/resources/chromium_strings_si.xtb +++ b/chrome/app/resources/chromium_strings_si.xtb
@@ -146,6 +146,7 @@ <translation id="2910007522516064972">&Chromium පිළිබඳ</translation> <translation id="2915996080311180594">පසුව යළි අරඹන්න</translation> <translation id="2928420929544864228">ස්ථාපනය සම්පූර්ණයි.</translation> +<translation id="2933336679234709858">ඔබේ දත්ත ඔබේ මුර-වැකිකඩ සමග සංකේතනය කර ඇත. ඔබේ Google ගිණුමේ Chromium දත්ත භාවිතා කිරීමට සහ සුරැකීමට එය ඇතුළු කරන්න.</translation> <translation id="2945997411976714835">ස්ථාපන දෝෂය: ස්ථාපක ක්රියාවලිය ආරම්භ කිරීමට අසමත් විය.</translation> <translation id="2970426615109535079">ඔබේ සංවිධානය Chromium කළමනාකරණය කරයි</translation> <translation id="2977470724722393594">Chromium යාවත්කාලීනයි</translation>
diff --git a/chrome/app/resources/chromium_strings_sk.xtb b/chrome/app/resources/chromium_strings_sk.xtb index fdb3323e..62336e9 100644 --- a/chrome/app/resources/chromium_strings_sk.xtb +++ b/chrome/app/resources/chromium_strings_sk.xtb
@@ -146,6 +146,7 @@ <translation id="2910007522516064972">Informácie o prehliadači &Chromium</translation> <translation id="2915996080311180594">Reštartovať neskôr</translation> <translation id="2928420929544864228">Inštalácia bola dokončená.</translation> +<translation id="2933336679234709858">Údaje sú šifrované pomocou vašej prístupovej frázy. Zadajte ju, keď chcete používať a ukladať údaje prehliadača Chromium vo svojom účte Google.</translation> <translation id="2945997411976714835">Chyba inštalácie: proces inštalátora sa nespustil.</translation> <translation id="2970426615109535079">Chromium spravuje vaša organizácia</translation> <translation id="2977470724722393594">Prehliadač Chromium bol aktualizovaný</translation> @@ -217,6 +218,7 @@ <translation id="391789666908693569">Váš účet spravuje <ph name="MANAGER_NAME" />. Váš správca si môže zobraziť a upraviť tento profil prehliadača Chromium vrátane jeho údajov, ako sú záložky, história a heslá.</translation> <translation id="3941890832296813527">Chyba inštalácie: názov súboru inštalátora je neplatný alebo nie je podporovaný.</translation> <translation id="3945058413678539331">Chromium sa pokúša kopírovať heslá. Ak to chcete povoliť, zadajte heslo systému Windows.</translation> +<translation id="3954172517175569325">Heslá, spôsoby platby a adresy uložené vo vašom účte Google budú z tohto zariadenia odstránené. Ak ich chcete opäť používať v prehliadači Chromium, znova sa prihláste.</translation> <translation id="3962647064319009959">Ako vás Chromium chráni</translation> <translation id="3975724895399328945">Google Chrome for Testing</translation> <translation id="3997429360543082038">Chromium OS</translation>
diff --git a/chrome/app/resources/chromium_strings_sl.xtb b/chrome/app/resources/chromium_strings_sl.xtb index 315cd5f..20a9c68e 100644 --- a/chrome/app/resources/chromium_strings_sl.xtb +++ b/chrome/app/resources/chromium_strings_sl.xtb
@@ -219,6 +219,7 @@ <translation id="391789666908693569">Vaš račun upravlja <ph name="MANAGER_NAME" />. Vaš skrbnik lahko vidi in upravlja ta profil za brskalnik Chromium s podatki vred, in sicer zaznamki, zgodovino ter gesli.</translation> <translation id="3941890832296813527">Napaka pri namestitvi: Ime datoteke namestitvenega programa je neveljavno ali ni podprto.</translation> <translation id="3945058413678539331">Chromium poskuša kopirati gesla. Če želite to omogočiti, vnesite geslo za Windows.</translation> +<translation id="3954172517175569325">Gesla, plačilna sredstva in naslovi, ki ste jih shranili v računu Google, bodo odstranjeni iz te naprave. Če jih želite znova uporabljati v Chromiumu, se vnovič prijavite.</translation> <translation id="3962647064319009959">Preberite, kako vas Chromium varuje</translation> <translation id="3975724895399328945">O različici &Google Chrome for Testing</translation> <translation id="3997429360543082038">O sistemu Chromium OS</translation>
diff --git a/chrome/app/resources/chromium_strings_sv.xtb b/chrome/app/resources/chromium_strings_sv.xtb index 3c72e44..e1157a5 100644 --- a/chrome/app/resources/chromium_strings_sv.xtb +++ b/chrome/app/resources/chromium_strings_sv.xtb
@@ -219,6 +219,7 @@ <translation id="391789666908693569">Kontot hanteras av <ph name="MANAGER_NAME" />. Administratören kan se och redigera den här Chromium-profilen och tillhörande data som bokmärken, historik och lösenord.</translation> <translation id="3941890832296813527">Installationsfel: Installationens filnamn är ogiltigt eller stöds inte.</translation> <translation id="3945058413678539331">Skriv ditt Windows-lösenord om du tillåter att lösenorden i Chromium kopieras.</translation> +<translation id="3954172517175569325">Dina sparade lösenord, betalningsmetoder och adresser i Google-kontot tas bort från den här enheten. Logga in på nytt om du vill använda dem igen i Chromium.</translation> <translation id="3962647064319009959">Läs mer om hur du skyddas i Chromium</translation> <translation id="3975724895399328945">Om &Google Chrome for Testing</translation> <translation id="3997429360543082038">Om Chromium OS</translation>
diff --git a/chrome/app/resources/chromium_strings_sw.xtb b/chrome/app/resources/chromium_strings_sw.xtb index 69c8caa..e7cffa0 100644 --- a/chrome/app/resources/chromium_strings_sw.xtb +++ b/chrome/app/resources/chromium_strings_sw.xtb
@@ -219,6 +219,7 @@ <translation id="391789666908693569">Akaunti yako inadhibitiwa na <ph name="MANAGER_NAME" />. Msimamizi wako anaweza kuona na kubadilisha wasifu wa kivinjari hiki cha Chromium na data yake kama vile alamisho, historia na manenosiri.</translation> <translation id="3941890832296813527">Hitilafu ya kusakinisha: Jina la faili ya kisakinishaji si sahihi au haliwezi kutumika.</translation> <translation id="3945058413678539331">Chromium inajaribu kunakili manenosiri. Andika nenosiri lako la Windows ili uiruhusu.</translation> +<translation id="3954172517175569325">Manenosiri, njia za kulipa na anwani ulizohifadhi katika Akaunti yako ya Google zitaondolewa kwenye kifaa hiki. Ili uzitumie tena katika Chromium, ingia katika akaunti.</translation> <translation id="3962647064319009959">Pata maelezo ya jinsi ya Chromium inavyokufanya inavyohakikisha usalama wako</translation> <translation id="3975724895399328945">Kuhusu &Google Chrome ya Majaribio</translation> <translation id="3997429360543082038">Kuhusu Mfumo wa Uendeshaji wa Chromium</translation>
diff --git a/chrome/app/resources/chromium_strings_tr.xtb b/chrome/app/resources/chromium_strings_tr.xtb index 3aa0e54..ec499581 100644 --- a/chrome/app/resources/chromium_strings_tr.xtb +++ b/chrome/app/resources/chromium_strings_tr.xtb
@@ -144,6 +144,7 @@ <translation id="2910007522516064972">&Chromium hakkında</translation> <translation id="2915996080311180594">Daha Sonra Yeniden Başlat</translation> <translation id="2928420929544864228">Yükleme tamamlandı.</translation> +<translation id="2933336679234709858">Verileriniz parolanızla şifrelenir. Chromium verilerini kullanmak ve Google Hesabınıza kaydetmek için bu kodu girin.</translation> <translation id="2945997411976714835">Yükleme hatası: Yükleyici işlemi başlatılamadı.</translation> <translation id="2970426615109535079">Chromium'u kuruluşunuz yönetiyor</translation> <translation id="2977470724722393594">Chromium güncel durumda</translation>
diff --git a/chrome/app/resources/chromium_strings_uz.xtb b/chrome/app/resources/chromium_strings_uz.xtb index a333f90..61a6b67e 100644 --- a/chrome/app/resources/chromium_strings_uz.xtb +++ b/chrome/app/resources/chromium_strings_uz.xtb
@@ -214,6 +214,7 @@ <translation id="391789666908693569">Hisobingiz <ph name="MANAGER_NAME" /> domenida boshqariladi. Administrator Chromium brauzeri profili va undagi bukmarklar, tarix va parollar kabi maʼlumotlarni koʻrib, tahrirlay oladi.</translation> <translation id="3941890832296813527">Oʻrnatishda xato: Oʻrnatish vositasi fayl nomi yaroqsiz yoki ishlamaydi.</translation> <translation id="3945058413678539331">Chromium parollarni nusxalashga urinmoqda. Ruxsat berish uchun Windows parolingizni kiriting.</translation> +<translation id="3954172517175569325">Google hisobingizga saqlangan parollar, toʻlov usullari va manzillar bu qurilmadan olib tashlanadi. Ularni Chromiumda yana ishlatish uchun hisobingizga kiring.</translation> <translation id="3962647064319009959">Chromium qanday qilib sizni himoya qilishi haqida batafsil</translation> <translation id="3975724895399328945">Google Chrome for Testing haqida</translation> <translation id="3997429360543082038">ChromiumOS haqida</translation>
diff --git a/chrome/app/resources/chromium_strings_vi.xtb b/chrome/app/resources/chromium_strings_vi.xtb index b8dfbe0..d71b21ea 100644 --- a/chrome/app/resources/chromium_strings_vi.xtb +++ b/chrome/app/resources/chromium_strings_vi.xtb
@@ -145,6 +145,7 @@ <translation id="2910007522516064972">Giới thiệu về &Chromium</translation> <translation id="2915996080311180594">Khởi động lại sau</translation> <translation id="2928420929544864228">Đã cài đặt xong.</translation> +<translation id="2933336679234709858">Dữ liệu của bạn được mã hoá bằng cụm mật khẩu. Nhập cụm mật khẩu để sử dụng và lưu dữ liệu Chromium vào Tài khoản Google của bạn.</translation> <translation id="2945997411976714835">Lỗi cài đặt: Trình cài đặt không thể bắt đầu quá trình.</translation> <translation id="2970426615109535079">Tổ chức bạn quản lý Chromium</translation> <translation id="2977470724722393594">Chromium đã được cập nhật</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-CN.xtb b/chrome/app/resources/chromium_strings_zh-CN.xtb index ecea2c99..b363223b 100644 --- a/chrome/app/resources/chromium_strings_zh-CN.xtb +++ b/chrome/app/resources/chromium_strings_zh-CN.xtb
@@ -216,6 +216,7 @@ <translation id="391789666908693569">您的账号由 <ph name="MANAGER_NAME" /> 管理。您的管理员能看到并修改这份 Chromium 浏览器个人资料及其数据(例如书签、历史记录和密码)。</translation> <translation id="3941890832296813527">安装时出错:安装程序文件名无效或不受支持。</translation> <translation id="3945058413678539331">Chromium 正在尝试复制密码。请输入您的 Windows 密码以允许此操作。</translation> +<translation id="3954172517175569325">您在 Google 账号中保存的密码、支付方式和地址将从此设备中移除。如需在 Chromium 中重新使用这些数据,请重新登录。</translation> <translation id="3962647064319009959">了解 Chromium 如何保障您的安全</translation> <translation id="3975724895399328945">关于 Google Chrome for Testing(&G)</translation> <translation id="3997429360543082038">关于 Chromium 操作系统</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-HK.xtb b/chrome/app/resources/chromium_strings_zh-HK.xtb index 7d50c92..38f9570a 100644 --- a/chrome/app/resources/chromium_strings_zh-HK.xtb +++ b/chrome/app/resources/chromium_strings_zh-HK.xtb
@@ -218,6 +218,7 @@ <translation id="391789666908693569">您的帳戶由 <ph name="MANAGER_NAME" /> 管理。管理員可查看並編輯此 Chromium 瀏覽器設定檔和其資料,例如書籤、記錄和密碼。</translation> <translation id="3941890832296813527">安裝錯誤:安裝程式檔案名稱無效或不支援。</translation> <translation id="3945058413678539331">Chromium 正在嘗試複製密碼。如果您同意的話,請輸入 Windows 密碼。</translation> +<translation id="3954172517175569325">你儲存在 Google 帳戶中的密碼、付款方法和地址將從此裝置中移除。如要再次在 Chromium 中使用這些資料,請重新登入。</translation> <translation id="3962647064319009959">瞭解 Chromium 如何使用者的網上安全</translation> <translation id="3975724895399328945">關於 Google Chrome for Testing(&G)</translation> <translation id="3997429360543082038">關於 Chromium 作業系統</translation>
diff --git a/chrome/app/resources/chromium_strings_zh-TW.xtb b/chrome/app/resources/chromium_strings_zh-TW.xtb index 284d152..3caa262 100644 --- a/chrome/app/resources/chromium_strings_zh-TW.xtb +++ b/chrome/app/resources/chromium_strings_zh-TW.xtb
@@ -216,6 +216,7 @@ <translation id="391789666908693569">你的帳戶是由 <ph name="MANAGER_NAME" /> 管理。系統管理員可查看及編輯這個 Chromium 瀏覽器設定檔及其中的資料,例如書籤、歷史記錄和密碼。</translation> <translation id="3941890832296813527">安裝錯誤:安裝程式檔案名稱無效或不受支援。</translation> <translation id="3945058413678539331">Chromium 正在嘗試複製密碼。如果你同意這項作業,請輸入你的 Windows 密碼。</translation> +<translation id="3954172517175569325">你儲存在 Google 帳戶中的密碼、付款方式和地址將從這部裝置中移除。如要在 Chromium 中再次使用這些資料,請重新登入。</translation> <translation id="3962647064319009959">瞭解 Chromium 如何保護資料安全</translation> <translation id="3975724895399328945">關於 Google Chrome for Testing(&G)</translation> <translation id="3997429360543082038">關於 Chromium OS</translation>
diff --git a/chrome/app/resources/generated_resources_af.xtb b/chrome/app/resources/generated_resources_af.xtb index 53806435..90b2224b6 100644 --- a/chrome/app/resources/generated_resources_af.xtb +++ b/chrome/app/resources/generated_resources_af.xtb
@@ -1434,7 +1434,6 @@ <translation id="1980168597243156">Ruimtestasie</translation> <translation id="1981434377190976112">Lees al jou data op alle webwerwe</translation> <translation id="1982851102516626421">Jy is afgemeld</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} en {field_2}}other{{field_1}, {field_2} en {field_3}}}</translation> <translation id="1984417487208496350">Geen beskerming nie (nie aanbeveel nie)</translation> <translation id="198507684520034826">Hulp</translation> <translation id="1986836014090708999">Gevorderde ligginginstellings</translation> @@ -4942,7 +4941,6 @@ <translation id="4462159676511157176">Gepasmaakte naambedieners</translation> <translation id="4465236939126352372">Tydlimiet van <ph name="TIME" /> gestel vir <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">Verkeerde PIN</translation> -<translation id="4467561276409486506">&Wissel Kompakmodus</translation> <translation id="4469324811108161144">Notas kan tot <ph name="CHARACTER_LIMIT" /> karakters stoor.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> kan lêers in <ph name="FOLDERNAME" /> wysig</translation> <translation id="4470957202018033307">Eksterne bergingvoorkeure</translation>
diff --git a/chrome/app/resources/generated_resources_am.xtb b/chrome/app/resources/generated_resources_am.xtb index f11a9e50..a001f40 100644 --- a/chrome/app/resources/generated_resources_am.xtb +++ b/chrome/app/resources/generated_resources_am.xtb
@@ -1432,7 +1432,6 @@ <translation id="1980168597243156">የጠፈር ጣቢያ</translation> <translation id="1981434377190976112">ሁሉንም መረጃዎችዎን በሁሉም ድር ጣቢያዎች ላይ ያንብቡ</translation> <translation id="1982851102516626421">ዘግተው ወጥተዋል</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} እና {field_2}}one{{field_1}፣ {field_2}፣ እና {field_3}}other{{field_1}፣ {field_2}፣ እና {field_3}}}</translation> <translation id="1984417487208496350">ምንም ጥበቃ የለም (አይመከርም)</translation> <translation id="198507684520034826">እገዛ</translation> <translation id="1986836014090708999">የላቀ የአካባቢ ቅንብሮች</translation> @@ -4936,7 +4935,6 @@ <translation id="4462159676511157176">የብጁ ስም አገልጋዮች</translation> <translation id="4465236939126352372">ለ<ph name="APP_NAME" /> የ<ph name="TIME" /> የጊዜ ገደብ ተቀናብሯል</translation> <translation id="4467373268340082204">የተሳሳተ ፒን</translation> -<translation id="4467561276409486506">እና የመቀያየሪያ ውሱን ሁነታ</translation> <translation id="4469324811108161144">ማስታወሻዎች እስከ <ph name="CHARACTER_LIMIT" /> ቁምፊዎች ድረስ ማስቀመጥ ይችላሉ።</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> በ<ph name="FOLDERNAME" /> ውስጥ ፋይሎችን ማርትዕ ይችላል</translation> <translation id="4470957202018033307">የውጫዊ ማከማቻ ምርጫዎች</translation>
diff --git a/chrome/app/resources/generated_resources_ar.xtb b/chrome/app/resources/generated_resources_ar.xtb index 98bf3ff..239b1bc 100644 --- a/chrome/app/resources/generated_resources_ar.xtb +++ b/chrome/app/resources/generated_resources_ar.xtb
@@ -1430,7 +1430,6 @@ <translation id="1980168597243156">محطة فضائية</translation> <translation id="1981434377190976112">الاطّلاع على جميع بياناتك على جميع المواقع الإلكترونية</translation> <translation id="1982851102516626421">لقد سجّلت الخروج من حسابك</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} و{field_2}}zero{{field_1} و{field_2} و{field_3}}few{{field_1} و{field_2} و{field_3}}many{{field_1} و{field_2} و{field_3}}other{{field_1} و{field_2} و{field_3}}}</translation> <translation id="1984417487208496350">بلا حماية (غير مُستحسَن)</translation> <translation id="198507684520034826">مساعدة</translation> <translation id="1986836014090708999">الإعدادات المتقدمة للموقع الجغرافي</translation> @@ -4935,7 +4934,6 @@ <translation id="4462159676511157176">خوادم أسماء مخصصة</translation> <translation id="4465236939126352372">تم ضبط الحد الأقصى المسموح به لاستخدام تطبيق <ph name="APP_NAME" /> على <ph name="TIME" />.</translation> <translation id="4467373268340082204">رقم التعريف الشخصي غير صحيح</translation> -<translation id="4467561276409486506">&تفعيل "الوضع المكثف" أو إيقافه</translation> <translation id="4469324811108161144">الحد الأقصى لعدد الأحرف في الملاحظات هو <ph name="CHARACTER_LIMIT" />.</translation> <translation id="4469762931504673593">بإمكان <ph name="ORIGIN" /> تعديل الملفات في <ph name="FOLDERNAME" />.</translation> <translation id="4470957202018033307">الإعدادات المفضلة لمساحة التخزين الخارجية</translation>
diff --git a/chrome/app/resources/generated_resources_as.xtb b/chrome/app/resources/generated_resources_as.xtb index f49a739..9c3b3e7 100644 --- a/chrome/app/resources/generated_resources_as.xtb +++ b/chrome/app/resources/generated_resources_as.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">ডিভাইচটো আনলক কৰিবলৈ আপোনাৰ শিশুৱে এটা পিন ব্যৱহাৰ কৰিব পাৰে।</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216"><ph name="LANGUAGE" />ৰ বানান পৰীক্ষাৰ অভিধান ডাউনল'ড কৰিব পৰা নগ'ল। পুনৰ চেষ্টা কৰক।</translation> +<translation id="1078029726086090536">আপোনাৰ পাছৱৰ্ড সত্যাপন কৰক</translation> <translation id="1078037449555275327">ChromeVoxৰ ছেটিং</translation> <translation id="1079242569060319448">পিন পাহৰিলে নেকি?</translation> <translation id="1079285777677001938">কিছুমান ছাইটত সুবিধাসমূহে কাম নকৰিবও পাৰে।</translation> @@ -1432,7 +1433,6 @@ <translation id="1980168597243156">মহাকাশ ষ্টেচন</translation> <translation id="1981434377190976112">আটাইবোৰ ৱেবছাইটত আপোনাৰ ডেটা পঢ়িব পাৰে</translation> <translation id="1982851102516626421">আপুনি ছাইন আউট হৈ আছে</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} আৰু {field_2}}one{{field_1}, {field_2} আৰু {field_3}}other{{field_1}, {field_2} আৰু {field_3}}}</translation> <translation id="1984417487208496350">কোনো সুৰক্ষা নাই (চুপাৰিছ কৰা নহয়)</translation> <translation id="198507684520034826">সহায়</translation> <translation id="1986836014090708999">উন্নত অৱস্থান ছেটিং</translation> @@ -4092,6 +4092,7 @@ <translation id="3848547754896969219">&ইনক’গনিট’ ৱিণ্ড’ত খোলক</translation> <translation id="3850172593216628215">সুৰক্ষা সম্পৰ্কীয় আপডে’ট সমাপ্ত হৈছে। এটা নতুন Chromebookত $৫০ অথবা অধিক ৰাহি কৰক।</translation> <translation id="385051799172605136">উভতি যাওক</translation> +<translation id="3850989673553106152">পাছৱৰ্ড সলনি কৰা হ’ল</translation> <translation id="3851428669031642514">অসুৰক্ষিত স্ক্ৰিপ্ট ল’ড কৰক</translation> <translation id="3852215160863921508">ইনপুট সহায়তা</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" /> অন কৰা আছে</translation> @@ -4593,6 +4594,7 @@ <translation id="421182450098841253">&বুকমার্ক বাৰ দেখুৱাওক</translation> <translation id="4211904048067111541">Android এপৰ সৈতে ব্যৱহাৰ কৰাটো বন্ধ কৰক</translation> <translation id="42126664696688958">ৰপ্তানি কৰক</translation> +<translation id="4213540068152645535">আপোনাৰ পাছৱৰ্ডটো সলনি কৰাত সমস্যা হৈছে</translation> <translation id="42137655013211669">ছাৰ্ভাৰে এই সম্পদটোলৈ এক্সেছ নিষিদ্ধ কৰিছে।</translation> <translation id="4213918571089943508">শিশুৰ Google একাউণ্ট</translation> <translation id="4214192212360095377">এতিয়া অফ কৰক</translation> @@ -4939,7 +4941,6 @@ <translation id="4462159676511157176">কাষ্টম নাম ছার্ভাৰ</translation> <translation id="4465236939126352372"><ph name="APP_NAME" />ৰ বাবে <ph name="TIME" /> সময়সীমা ছেট কৰা হৈছে</translation> <translation id="4467373268340082204">ভুল পিন</translation> -<translation id="4467561276409486506">সংক্ষিপ্ত ম’ড ট’গল কৰক</translation> <translation id="4469324811108161144">টোকায়ে <ph name="CHARACTER_LIMIT" /> টা পৰ্যন্ত বৰ্ণ ছেভ কৰিব পাৰে।</translation> <translation id="4469762931504673593"><ph name="ORIGIN" />এ <ph name="FOLDERNAME" />ত থকা ফাইলসমূহ সম্পাদনা কৰিব পাৰে</translation> <translation id="4470957202018033307">বাহ্যিক ষ্ট’ৰেজৰ অগ্ৰাধিকাৰসমূহ</translation> @@ -7445,6 +7446,7 @@ <translation id="6278776436938569440">অৱস্থান সলনি কৰক</translation> <translation id="6280215091796946657">বেলেগ এটা একাউণ্টৰ দ্বাৰা ছাইন ইন কৰক</translation> <translation id="6280912520669706465">এআৰচি</translation> +<translation id="6281218688313242284">আপোনাৰ &Google একাউণ্টটো পৰিচালনা কৰক</translation> <translation id="6282180787514676874">{COUNT,plural, =1{১ খন কাগজৰ সীমা অতিক্ৰম কৰিছে}one{{COUNT} খন কাগজৰ সীমা অতিক্ৰম কৰিছে}other{{COUNT} খন কাগজৰ সীমা অতিক্ৰম কৰিছে}}</translation> <translation id="6282490239556659745"><ph name="SITE" />ৰ পৰা <ph name="EMBEDDED_SITE" /> আঁতৰাওক</translation> <translation id="6283438600881103103">এতিয়া আপোনাক স্বয়ংক্ৰিয়ভাৱে ছাইন আউট কৰা হ’ব। @@ -8058,6 +8060,7 @@ <translation id="6745592621698551453">এতিয়াই আপডে’ট কৰক</translation> <translation id="6746124502594467657">তললৈ নিয়ক</translation> <translation id="67465227497040338"><ph name="DOMAIN" />ৰ পাছৱৰ্ড দেখুৱাওক</translation> +<translation id="6746834324024491643">আপোনাৰ আটাইবোৰ ডিভাইচত আপোনাৰ পাছৱৰ্ড আৰু অধিক পাবলৈ, <ph name="EMAIL" /> হিচাপে ছাইন ইন কৰক</translation> <translation id="6748980958975836188">মই <ph name="BEGIN_LINK1" />Googleৰ সেৱাৰ চৰ্তাৱলী<ph name="END_LINK1" />, <ph name="BEGIN_LINK2" />Chrome আৰু ChromeOSৰ অতিৰিক্ত সেৱাৰ চৰ্তাৱলী<ph name="END_LINK2" /> পঢ়িছোঁ আৰু তাত সন্মতি দিওঁ।</translation> <translation id="6749077623962119521">অনুমতি ৰিছেট কৰিবনে?</translation> <translation id="6749473226660745022">ফট’</translation> @@ -8315,6 +8318,7 @@ <translation id="6913051485529944333">আপুনি এই পৃষ্ঠাত Google Calendar পুনৰ দেখা নাপাব</translation> <translation id="6914812290245989348">অসুৰক্ষিত ছাইটলৈ যোৱাৰ পূৰ্বে কোনো সকীয়নি নাচাব</translation> <translation id="6916590542764765824">এক্সটেনশ্বন পৰিচালনা কৰক</translation> +<translation id="6916676294509106572">Outlookৰ কেলেণ্ডাৰ লুকুওৱা হৈছে</translation> <translation id="6917873303492266709">টেবৰ গোটসমূহ শ্বেয়াৰ কৰিবলৈ, সেইবোৰত যোগদান কৰিবলৈ আৰু সেইবোৰৰ জৰিয়তে সহযোগিতা কৰিবলৈ, ছেটিং খোলক আৰু Chromeত ছাইন ইন কৰাৰ অনুমতি দিয়ক অন কৰক</translation> <translation id="6918677045355889289">ChromeOS আপডে’ট কৰাৰ আৱশ্যক</translation> <translation id="6918733588290914545">Android ফ’নৰ জৰিয়তে ক্ষিপ্ৰ ছেট আপ</translation> @@ -10693,6 +10697,7 @@ <translation id="8625124982056504555">ChromeOS ডিভাইচ আৰু উপাদানৰ ক্ৰমিক নম্বৰসমূহ পঢ়া</translation> <translation id="862542460444371744">&এক্সটেনশ্বন</translation> <translation id="8625663000550647058">আপোনাৰ মাইক্ৰ’ফ’ন ব্যৱহাৰ কৰাৰ অনুমতি নাই</translation> +<translation id="8625679025395572221">আপোনাৰ একাউণ্টটোৰ এতিয়াও বিপদাশংকা থাকিব পাৰে</translation> <translation id="8625916342247441948">ছাইটক HID ডিভাইচৰ সৈতে সংযোগ কৰাৰ অনুমতি নিদিব</translation> <translation id="862727964348362408">স্থগিত</translation> <translation id="862750493060684461">CSS কেশ্ব</translation>
diff --git a/chrome/app/resources/generated_resources_az.xtb b/chrome/app/resources/generated_resources_az.xtb index 1e915141..6558bb442 100644 --- a/chrome/app/resources/generated_resources_az.xtb +++ b/chrome/app/resources/generated_resources_az.xtb
@@ -122,6 +122,7 @@ <translation id="1076766328672150609">Övladınız cihazı kiliddən çıxarmaq üçün PİN kod istifadə edə bilər.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216"><ph name="LANGUAGE" /> üçün orfoqrafiya yoxlayan lüğət endirilə bilmədi Yenidən cəhd edin.</translation> +<translation id="1078029726086090536">Parolunuzu doğrulayın</translation> <translation id="1078037449555275327">ChromeVox ayarları</translation> <translation id="1079242569060319448">PIN-i unutmusunuz?</translation> <translation id="1079285777677001938">Bəzi saytlardakı funksiyalar işləməyə bilər.</translation> @@ -1420,7 +1421,6 @@ <translation id="1980168597243156">Kosmik stansiya</translation> <translation id="1981434377190976112">Bütün veb saytlarda bütün datanızı oxumaq</translation> <translation id="1982851102516626421">Çıxış etdiniz</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} və {field_2}}other{{field_1}, {field_2} və {field_3}}}</translation> <translation id="1984417487208496350">Qoruma yoxdur (tövsiyə edilmir)</translation> <translation id="198507684520034826">Yardım</translation> <translation id="1986836014090708999">Təkmil məkan ayarları</translation> @@ -4080,6 +4080,7 @@ <translation id="3848547754896969219">&Anonim pəncərədə açın</translation> <translation id="3850172593216628215">Təhlükəsizlik güncəllənmələri başa çatıb. Yeni Chromebook-da ən azı 50$ qənaət edin.</translation> <translation id="385051799172605136">Geri</translation> +<translation id="3850989673553106152">Parol dəyişdirildi</translation> <translation id="3851428669031642514">Güvənsiz skriptləri yükləyin</translation> <translation id="3852215160863921508">Daxiletmə Yardımı</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" /> aktiv edilib</translation> @@ -4580,6 +4581,7 @@ <translation id="421182450098841253">Əlfəcin panelini göstərin</translation> <translation id="4211904048067111541">Android tətbiqləri ilə istifadəni dayandırın</translation> <translation id="42126664696688958">Eksport</translation> +<translation id="4213540068152645535">Parolunuzu dəyişərkən problem oldu</translation> <translation id="42137655013211669">Bu resursa giriş server tərəfindən qadağan edilib.</translation> <translation id="4213918571089943508">Uşağın Google Hesabı</translation> <translation id="4214192212360095377">İndi deaktiv edin</translation> @@ -4926,7 +4928,6 @@ <translation id="4462159676511157176">Fərdi ad serverləri</translation> <translation id="4465236939126352372"><ph name="APP_NAME" /> üçün <ph name="TIME" /> vaxt limiti ayarlanıb</translation> <translation id="4467373268340082204">Yanlış PIN</translation> -<translation id="4467561276409486506">&Kompakt rejimə keçin</translation> <translation id="4469324811108161144">Qeydlər maksimum <ph name="CHARACTER_LIMIT" /> simvolu yadda saxlaya bilər.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> <ph name="FOLDERNAME" /> qovluğundakı faylları redaktə edə bilər</translation> <translation id="4470957202018033307">Xarici yaddaş tərcihləri</translation> @@ -8300,6 +8301,7 @@ <translation id="6913051485529944333">Google Calendar-ı bu səhifədə təkrar görməyəcəksiniz</translation> <translation id="6914812290245989348">Təhlükəli saytlara keçməzdən əvvəl xəbərdarlıqları görməyin</translation> <translation id="6916590542764765824">İstisnaları idarə edin</translation> +<translation id="6916676294509106572">Outlook Təqvimi gizlədilib</translation> <translation id="6917873303492266709">Tab qruplarında paylaşmaq, onlara qoşulmaq və əməkdaşlıq etmək üçün ayarları açın və Chrome girişinə icazə verin funksiyasını aktiv edin</translation> <translation id="6918677045355889289">ChromeOS güncəllənməsi tələb olunur</translation> <translation id="6918733588290914545">Android telefonu ilə cəld ayarlama</translation> @@ -10678,6 +10680,7 @@ <translation id="8625124982056504555">ChromeOS cihazı və komponentinin seriya nömrələrini oxumaq</translation> <translation id="862542460444371744">Artırmalar</translation> <translation id="8625663000550647058">Mikrofonunuzdan istifadə etmək icazəsi verilməyib</translation> +<translation id="8625679025395572221">Hesabınız hələ də təhlükə altında ola bilər.</translation> <translation id="8625916342247441948">Saytlara HID cihazlarına qoşulmaq icazəsi verməyin</translation> <translation id="862727964348362408">Ləğv edilib</translation> <translation id="862750493060684461">CSS keşi</translation>
diff --git a/chrome/app/resources/generated_resources_be.xtb b/chrome/app/resources/generated_resources_be.xtb index 5a35033..2b673f90 100644 --- a/chrome/app/resources/generated_resources_be.xtb +++ b/chrome/app/resources/generated_resources_be.xtb
@@ -1427,7 +1427,6 @@ <translation id="1980168597243156">Касмічная станцыя</translation> <translation id="1981434377190976112">Праглядаць усе вашы даныя на ўсіх вэб-сайтах</translation> <translation id="1982851102516626421">Вы выйшлі з уліковага запісу</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} і {field_2}}one{{field_1}, {field_2} і {field_3}}few{{field_1}, {field_2} і {field_3}}many{{field_1}, {field_2} і {field_3}}other{{field_1}, {field_2} і {field_3}}}</translation> <translation id="1984417487208496350">Без абароны (не рэкамендуецца)</translation> <translation id="198507684520034826">Даведка</translation> <translation id="1986836014090708999">Пашыраныя налады месцазнаходжання</translation> @@ -4928,7 +4927,6 @@ <translation id="4462159676511157176">Карыстальніцкія серверы даменных імён</translation> <translation id="4465236939126352372">Абмежаванне часу (<ph name="TIME" />) зададзена для праграмы "<ph name="APP_NAME" />"</translation> <translation id="4467373268340082204">Няправільны PIN-код</translation> -<translation id="4467561276409486506">Пераключыцца ў кампактны рэжым</translation> <translation id="4469324811108161144">Максімальная колькасць сімвалаў, якія можа змяшчаць нататка, – <ph name="CHARACTER_LIMIT" />.</translation> <translation id="4469762931504673593">Сайт <ph name="ORIGIN" /> можа змяняць файлы ў папцы <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Параметры знешняга сховішча</translation>
diff --git a/chrome/app/resources/generated_resources_bg.xtb b/chrome/app/resources/generated_resources_bg.xtb index 074a696..1dc0dc1 100644 --- a/chrome/app/resources/generated_resources_bg.xtb +++ b/chrome/app/resources/generated_resources_bg.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Детето ви може да отключва това устройство с ПИН код.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">Изтеглянето на речника за проверка на правописа за <ph name="LANGUAGE" /> не бе успешно. Опитайте отново.</translation> +<translation id="1078029726086090536">Потвърждаване на паролата ви</translation> <translation id="1078037449555275327">Настройки на ChromeVox</translation> <translation id="1079242569060319448">Забравихте ПИН кода си?</translation> <translation id="1079285777677001938">Функциите в някои сайтове може да не работят.</translation> @@ -1430,7 +1431,6 @@ <translation id="1980168597243156">Космическа станция</translation> <translation id="1981434377190976112">да чете всичките ви данни в уебсайтовете</translation> <translation id="1982851102516626421">Не сте в профила си</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} и {field_2}}other{{field_1}, {field_2} и {field_3}}}</translation> <translation id="1984417487208496350">Без защита (не се препоръчва)</translation> <translation id="198507684520034826">Помощ</translation> <translation id="1986836014090708999">Разширени настройки за местоположението</translation> @@ -4091,6 +4091,7 @@ <translation id="3848547754896969219">Отваряне в прозорец в режим „&инкогнито“</translation> <translation id="3850172593216628215">Актуализациите за сигурност приключиха. Спестете поне 50 щ.д. от цената на нов Chromebook.</translation> <translation id="385051799172605136">Назад</translation> +<translation id="3850989673553106152">Паролата бе променена</translation> <translation id="3851428669031642514">Зареждане на опасните скриптове</translation> <translation id="3852215160863921508">Съдействие при въвеждане</translation> <translation id="3853549894831560772">Устройството <ph name="DEVICE_NAME" /> е включено</translation> @@ -4593,6 +4594,7 @@ <translation id="421182450098841253">&Показване на лентата на отметките</translation> <translation id="4211904048067111541">Спиране на използването с приложения за Android</translation> <translation id="42126664696688958">Експортиране</translation> +<translation id="4213540068152645535">Проблеми с промяната на паролата ви</translation> <translation id="42137655013211669">Достъпът до този ресурс бе забранен от сървъра.</translation> <translation id="4213918571089943508">Профил в Google на дете</translation> <translation id="4214192212360095377">Изключване сега</translation> @@ -4939,7 +4941,6 @@ <translation id="4462159676511157176">Специално зададени сървъри за имена</translation> <translation id="4465236939126352372">За <ph name="APP_NAME" /> е зададено ограничение от <ph name="TIME" /></translation> <translation id="4467373268340082204">Грешен ПИН код</translation> -<translation id="4467561276409486506">Превключване на компактния режим</translation> <translation id="4469324811108161144">Бележките могат да съдържат най-много <ph name="CHARACTER_LIMIT" /> знака.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> може да редактира файловете в(ъв) „<ph name="FOLDERNAME" />“</translation> <translation id="4470957202018033307">Предпочитания за външно хранилище</translation> @@ -7446,6 +7447,7 @@ <translation id="6278776436938569440">Промяна на местоположението</translation> <translation id="6280215091796946657">Влизане с друг профил</translation> <translation id="6280912520669706465">ARC</translation> +<translation id="6281218688313242284">Управление на &профила ви в Google</translation> <translation id="6282180787514676874">{COUNT,plural, =1{Надхвърля ограничението от 1 лист хартия}other{Надхвърля ограничението от {COUNT} листа хартия}}</translation> <translation id="6282490239556659745">Искате ли да премахнете <ph name="EMBEDDED_SITE" /> от <ph name="SITE" />?</translation> <translation id="6283438600881103103">Ще излезете автоматично от профила си сега. @@ -8057,6 +8059,7 @@ <translation id="6745592621698551453">Актуализиране сега</translation> <translation id="6746124502594467657">Придвижване надолу</translation> <translation id="67465227497040338">Показване на паролата за <ph name="DOMAIN" /></translation> +<translation id="6746834324024491643">За да получите паролите си и др. на всичките си устройства, влезте като <ph name="EMAIL" /></translation> <translation id="6748980958975836188">Прочетох и приемам <ph name="BEGIN_LINK1" />Общите условия на Google<ph name="END_LINK1" /> и <ph name="BEGIN_LINK2" />Допълнителните общи условия на Chrome и Chrome OS<ph name="END_LINK2" />.</translation> <translation id="6749077623962119521">Да се нулират ли разрешенията?</translation> <translation id="6749473226660745022">Снимки</translation> @@ -8314,6 +8317,7 @@ <translation id="6913051485529944333">Повече няма да виждате Google Календар на тази страница</translation> <translation id="6914812290245989348">Да не се показват предупреждения преди отваряне на незащитени сайтове</translation> <translation id="6916590542764765824">Управление на разширенията</translation> +<translation id="6916676294509106572">Календарът в Outlook е скрит</translation> <translation id="6917873303492266709">За да споделяте, да се присъединявате и да си сътрудничите в групи раздели, отворете настройките и включете „Разрешаване на влизането в Chrome“</translation> <translation id="6918677045355889289">Изисква се актуализация на Chrome OS</translation> <translation id="6918733588290914545">Бързо настройване посредством телефон с Android</translation> @@ -10694,6 +10698,7 @@ <translation id="8625124982056504555">Четене на серийните номера на компонентите и устройството с ChromeOS</translation> <translation id="862542460444371744">&Разширения</translation> <translation id="8625663000550647058">Сайтове без разрешение за използване на микрофона ви</translation> +<translation id="8625679025395572221">Профилът ви може все още да е изложен на риск.</translation> <translation id="8625916342247441948">Да не се разрешава на сайтовете да се свързват с HID устройства</translation> <translation id="862727964348362408">Спряно</translation> <translation id="862750493060684461">Кеш за CSS</translation>
diff --git a/chrome/app/resources/generated_resources_bn.xtb b/chrome/app/resources/generated_resources_bn.xtb index c27582ed..9cc3e5ad 100644 --- a/chrome/app/resources/generated_resources_bn.xtb +++ b/chrome/app/resources/generated_resources_bn.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">আপনার সন্তান ডিভাইস আনলক করতে পিন ব্যবহার করতে পারে।</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216"><ph name="LANGUAGE" /> ভাষার বানান পরীক্ষা করার অভিধান ডাউনলোড করা যায়নি। আবার চেষ্টা করুন।</translation> +<translation id="1078029726086090536">আপনার পাসওয়ার্ড যাচাই করুন</translation> <translation id="1078037449555275327">ChromeVox সেটিংস</translation> <translation id="1079242569060319448">পিন ভুলে গেছেন?</translation> <translation id="1079285777677001938">কিছু সাইটের ফিচার কাজ নাও করতে পারে।</translation> @@ -1435,7 +1436,6 @@ <translation id="1980168597243156">স্পেস স্টেশন</translation> <translation id="1981434377190976112">সমস্ত ওয়েবসাইটে আপনার ডেটা পড়তে পারে</translation> <translation id="1982851102516626421">আপনি সাইন-আউট করেছেন</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} ও {field_2}}one{{field_1}, {field_2} ও {field_3}}other{{field_1}, {field_2} ও {field_3}}}</translation> <translation id="1984417487208496350">সুরক্ষিত নয় (সাজেস্ট করা হচ্ছে না)</translation> <translation id="198507684520034826">সহায়তা</translation> <translation id="1986836014090708999">উন্নত লোকেশন সেটিংস</translation> @@ -4095,6 +4095,7 @@ <translation id="3848547754896969219">ছদ্মবেশী উইন্ডোতে খুলুন</translation> <translation id="3850172593216628215">নিরাপত্তা আপডেট শেষ হয়েছে। একটি নতুন Chromebook-এ $৫০ বা তার বেশি সেভ করুন।</translation> <translation id="385051799172605136">ফিরুন</translation> +<translation id="3850989673553106152">পাসওয়ার্ড পরিবর্তন করা হয়েছে</translation> <translation id="3851428669031642514">অনিরাপদ স্ক্রিপ্টগুলি লোড করুন</translation> <translation id="3852215160863921508">ইনপুট সংক্রান্ত সহায়তা</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" /> চালু আছে</translation> @@ -4597,6 +4598,7 @@ <translation id="421182450098841253">ও বুকমার্ক বার দেখান</translation> <translation id="4211904048067111541">Android অ্যাপের সাথে ব্যবহার করা বন্ধ করুন</translation> <translation id="42126664696688958">রপ্তানি</translation> +<translation id="4213540068152645535">আপনার পাসওয়ার্ড পরিবর্তন করতে সমস্যা হচ্ছে</translation> <translation id="42137655013211669">এই সম্পদে অ্যাক্সেস করা সার্ভার দ্বারা নিষিদ্ধ ছিল।</translation> <translation id="4213918571089943508">বাচ্চার Google অ্যাকাউন্ট</translation> <translation id="4214192212360095377">এখনই বন্ধ করুন</translation> @@ -4943,7 +4945,6 @@ <translation id="4462159676511157176">কাস্টম নাম সার্ভার</translation> <translation id="4465236939126352372"><ph name="APP_NAME" />-এর জন্য <ph name="TIME" /> টাইম লিমিট সেট করা হয়েছে</translation> <translation id="4467373268340082204">ভুল পিন লেখা হয়েছে</translation> -<translation id="4467561276409486506">&কম্প্যাক্ট মোড টগল করুন</translation> <translation id="4469324811108161144">নোট সর্বাধিক <ph name="CHARACTER_LIMIT" />টি অক্ষর সেভ করতে পারে।</translation> <translation id="4469762931504673593"><ph name="ORIGIN" />-এর কাছে <ph name="FOLDERNAME" /> ফোল্ডারের ফাইল এডিট করার অনুমতি আছে</translation> <translation id="4470957202018033307">এক্সটারনাল স্টোরেজের ব্যাপারে অভিরুচি</translation> @@ -8322,6 +8323,7 @@ <translation id="6913051485529944333">এই পৃষ্ঠায় আপনি আর Google Calendar দেখতে পাবেন না</translation> <translation id="6914812290245989348">অসুরক্ষিত সাইটে যাওয়ার আগে কোনও সতর্কতা দেখতে পাওয়া যাবে না</translation> <translation id="6916590542764765824">এক্সটেনশানগুলি পরিচালনা করুন</translation> +<translation id="6916676294509106572">Outlook Calendar লুকানো আছে</translation> <translation id="6917873303492266709">ট্যাব গ্রুপে শেয়ার করতে, যোগ দিতে এবং কোল্যাবরেট করতে, সেটিংস খুলে 'Chrome-এ সাইন-ইনের অনুমতি দিন' বিকল্প চালু করুন</translation> <translation id="6918677045355889289">ChromeOS আপডেট করতে হবে</translation> <translation id="6918733588290914545">Android ফোনের সাহায্যে দ্রুত সেটআপ করুন</translation> @@ -10701,6 +10703,7 @@ <translation id="8625124982056504555">ChromeOS ডিভাইস ও কম্পোনেন্ট সিরিয়াল নম্বর পড়ুন</translation> <translation id="862542460444371744">&এক্সটেনশনস</translation> <translation id="8625663000550647058">আপনার মাইক্রোফোন ব্যবহার করার অনুমতি দেওয়া হয়নি</translation> +<translation id="8625679025395572221">আপনার অ্যাকাউন্টে এখনও নিরাপত্তার ঝুঁকি থাকতে পারে।</translation> <translation id="8625916342247441948">সাইটগুলিকে HID ডিভাইস কানেক্ট করতে দেয় না</translation> <translation id="862727964348362408">সাসপেন্ড</translation> <translation id="862750493060684461">CSS ক্যাশে</translation>
diff --git a/chrome/app/resources/generated_resources_bs.xtb b/chrome/app/resources/generated_resources_bs.xtb index 243008bb..527c617 100644 --- a/chrome/app/resources/generated_resources_bs.xtb +++ b/chrome/app/resources/generated_resources_bs.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Vaše dijete može koristiti PIN da otključa uređaj.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">Preuzimanje rječnika za provjeru pravopisa za jezik <ph name="LANGUAGE" /> nije uspjelo. Pokušajte ponovo.</translation> +<translation id="1078029726086090536">Potvrdite lozinku</translation> <translation id="1078037449555275327">Postavke ChromeVoxa</translation> <translation id="1079242569060319448">Zaboravili ste PIN?</translation> <translation id="1079285777677001938">Moguće je da funkcije neće raditi na nekim web lokacijama.</translation> @@ -1433,7 +1434,6 @@ <translation id="1980168597243156">Svemirska stanica</translation> <translation id="1981434377190976112">čitati sve vaše podatke na svim web lokacijama</translation> <translation id="1982851102516626421">Odjavljeni ste</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} i {field_2}}one{{field_1}, {field_2} i {field_3}}few{{field_1}, {field_2} i {field_3}}other{{field_1}, {field_2} i {field_3}}}</translation> <translation id="1984417487208496350">Bez zaštite (ne preporučuje se)</translation> <translation id="198507684520034826">Pomoć</translation> <translation id="1986836014090708999">Napredne postavke lokacije</translation> @@ -4093,6 +4093,7 @@ <translation id="3848547754896969219">Otvori u &anonimnom prozoru</translation> <translation id="3850172593216628215">Sigurnosna ažuriranja su se završila. Uštedite 50 USD ili više za novi Chromebook.</translation> <translation id="385051799172605136">Nazad</translation> +<translation id="3850989673553106152">Lozinka je promijenjena</translation> <translation id="3851428669031642514">Učitaj nesigurne skripte</translation> <translation id="3852215160863921508">Pomoć prilikom unosa</translation> <translation id="3853549894831560772">Uređaj <ph name="DEVICE_NAME" /> je uključen</translation> @@ -4595,6 +4596,7 @@ <translation id="421182450098841253">&Prikaži traku oznaka</translation> <translation id="4211904048067111541">Zaustavi korištenje s Android aplikacijama</translation> <translation id="42126664696688958">Izvezi</translation> +<translation id="4213540068152645535">Imamo poteškoće s promjenom lozinke</translation> <translation id="42137655013211669">Server je zabranio pristup ovom izvoru.</translation> <translation id="4213918571089943508">Djetetov Google račun</translation> <translation id="4214192212360095377">Isključi sada</translation> @@ -4941,7 +4943,6 @@ <translation id="4462159676511157176">Serveri prilagođenog imena</translation> <translation id="4465236939126352372">Postavljeno je ograničenje vremena od <ph name="TIME" /> za aplikaciju <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">Pogrešan PIN</translation> -<translation id="4467561276409486506">&Uključi/isključi kompaktni način rada</translation> <translation id="4469324811108161144">Broj znakova koji možete uštedjeti u napomenama je <ph name="CHARACTER_LIMIT" />.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> može uređivati fajlove u folderu <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Postavke vanjske pohrane</translation> @@ -8321,6 +8322,7 @@ <translation id="6913051485529944333">Nećete više vidjeti Google Kalendar na ovoj stranici</translation> <translation id="6914812290245989348">Ne prikazuj upozorenja prije odlaska na nesigurne web lokacije</translation> <translation id="6916590542764765824">Upravljanje ekstenzijama</translation> +<translation id="6916676294509106572">Outlook Calendar je sakriven</translation> <translation id="6917873303492266709">Da dijelite grupe kartica, pridružite im se i sarađujete u njima, otvorite postavke i uključite opciju Dozvoli prijavu u Chrome</translation> <translation id="6918677045355889289">Potrebno je ažurirati ChromeOS</translation> <translation id="6918733588290914545">Brzo postavite putem Android telefona</translation> @@ -10701,6 +10703,7 @@ <translation id="8625124982056504555">Očitavanje serijskih brojeva ChromeOS uređaja i komponenti</translation> <translation id="862542460444371744">&Ekstenzije</translation> <translation id="8625663000550647058">Nije dozvoljeno korištenje vašeg mikrofona</translation> +<translation id="8625679025395572221">Račun je možda i dalje izložen riziku.</translation> <translation id="8625916342247441948">Nemoj dozvoliti web lokacijama povezivanje s HID uređajima</translation> <translation id="862727964348362408">Suspendirana</translation> <translation id="862750493060684461">CSS keš memorija</translation>
diff --git a/chrome/app/resources/generated_resources_ca.xtb b/chrome/app/resources/generated_resources_ca.xtb index fe451f8..c3ed6b1 100644 --- a/chrome/app/resources/generated_resources_ca.xtb +++ b/chrome/app/resources/generated_resources_ca.xtb
@@ -1424,7 +1424,6 @@ <translation id="1980168597243156">Estació espacial</translation> <translation id="1981434377190976112">Llegir totes les dades en tots els llocs web</translation> <translation id="1982851102516626421">Tens la sessió tancada</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} i {field_2}}other{{field_1}, {field_2} i {field_3}}}</translation> <translation id="1984417487208496350">Sense protecció (opció no recomanada)</translation> <translation id="198507684520034826">Ajuda</translation> <translation id="1986836014090708999">Configuració d'ubicació avançada</translation> @@ -4926,7 +4925,6 @@ <translation id="4462159676511157176">Servidors de noms personalitzats</translation> <translation id="4465236939126352372">S'ha establert <ph name="TIME" /> com a límit de temps per a <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">El PIN no és correcte</translation> -<translation id="4467561276409486506">&Commuta el mode compacte</translation> <translation id="4469324811108161144">Les notes poden desar fins a <ph name="CHARACTER_LIMIT" /> caràcters.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> pot editar els fitxers que conté la carpeta <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Preferències de l'emmagatzematge extern</translation> @@ -7429,6 +7427,7 @@ <translation id="6278776436938569440">Canvia la ubicació</translation> <translation id="6280215091796946657">Inicia la sessió amb un altre compte</translation> <translation id="6280912520669706465">ARC</translation> +<translation id="6281218688313242284">Gestiona el teu &Compte de Google</translation> <translation id="6282180787514676874">{COUNT,plural, =1{Supera el límit (1 full de paper)}other{Supera el límit ({COUNT} fulls de paper)}}</translation> <translation id="6282490239556659745">Suprimeix <ph name="EMBEDDED_SITE" /> de <ph name="SITE" /></translation> <translation id="6283438600881103103">Se't tancarà la sessió automàticament ara mateix. @@ -8040,6 +8039,7 @@ <translation id="6745592621698551453">Actualitza ara</translation> <translation id="6746124502594467657">Mou avall</translation> <translation id="67465227497040338">Mostra la contrasenya per a <ph name="DOMAIN" /></translation> +<translation id="6746834324024491643">Per accedir a les teves contrasenyes i altres dades des de tots els teus dispositius, inicia la sessió com a <ph name="EMAIL" /></translation> <translation id="6748980958975836188">He llegit i accepto les <ph name="BEGIN_LINK1" />condicions del servei de Google<ph name="END_LINK1" /> i les <ph name="BEGIN_LINK2" />condicions del servei addicionals de Chrome i Chrome OS<ph name="END_LINK2" />.</translation> <translation id="6749077623962119521">Vols restablir els permisos?</translation> <translation id="6749473226660745022">Fotos</translation>
diff --git a/chrome/app/resources/generated_resources_cs.xtb b/chrome/app/resources/generated_resources_cs.xtb index 9e11111c..2aff12c 100644 --- a/chrome/app/resources/generated_resources_cs.xtb +++ b/chrome/app/resources/generated_resources_cs.xtb
@@ -1426,7 +1426,6 @@ <translation id="1980168597243156">Vesmírná stanice</translation> <translation id="1981434377190976112">Číst veškerá vaše data na všech webech</translation> <translation id="1982851102516626421">Jste odhlášení</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} a {field_2}}few{{field_1}, {field_2} a {field_3}}many{{field_1}, {field_2} a {field_3}}other{{field_1}, {field_2} a {field_3}}}</translation> <translation id="1984417487208496350">Bez ochrany (nedoporučujeme)</translation> <translation id="198507684520034826">Nápověda</translation> <translation id="1986836014090708999">Pokročilé geografické nastavení</translation> @@ -4928,7 +4927,6 @@ <translation id="4462159676511157176">Vlastní názvové servery</translation> <translation id="4465236939126352372">Pro aplikaci <ph name="APP_NAME" /> byl nastaven časový limit <ph name="TIME" /></translation> <translation id="4467373268340082204">Nesprávný PIN</translation> -<translation id="4467561276409486506">&Přepnout kompaktní režim</translation> <translation id="4469324811108161144">Poznámky mohou uložit max. <ph name="CHARACTER_LIMIT" /> znaků.</translation> <translation id="4469762931504673593">Web <ph name="ORIGIN" /> může upravovat soubory ve složce <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Předvolby externího úložiště</translation>
diff --git a/chrome/app/resources/generated_resources_cy.xtb b/chrome/app/resources/generated_resources_cy.xtb index 5764106..c2069fb7 100644 --- a/chrome/app/resources/generated_resources_cy.xtb +++ b/chrome/app/resources/generated_resources_cy.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Gall eich plentyn ddefnyddio PIN i ddatgloi'r ddyfais.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">Methu â lawrlwytho geiriadur gwirio sillafu ar gyfer <ph name="LANGUAGE" />. Rhowch gynnig arall arni.</translation> +<translation id="1078029726086090536">Dilysu eich cyfrinair</translation> <translation id="1078037449555275327">Gosodiadau ChromeVox</translation> <translation id="1079242569060319448">Wedi anghofio'r PIN?</translation> <translation id="1079285777677001938">Mae'n bosib na fydd nodweddion ar rai gwefannau yn gweithio.</translation> @@ -1437,7 +1438,6 @@ <translation id="1980168597243156">Gorsaf ofod</translation> <translation id="1981434377190976112">Darllen eich holl ddata ar bob gwefan</translation> <translation id="1982851102516626421">Rydych wedi'ch allgofnodi</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} a {field_2}}zero{{field_1}, {field_2}, a {field_3}}few{{field_1}, {field_2}, a {field_3}}many{{field_1}, {field_2}, a {field_3}}other{{field_1}, {field_2}, a {field_3}}}</translation> <translation id="1984417487208496350">Dim diogelwch (ni argymhellir)</translation> <translation id="198507684520034826">Cymorth</translation> <translation id="1986836014090708999">Gosodiadau lleoliad uwch</translation> @@ -4097,6 +4097,7 @@ <translation id="3848547754896969219">Agor mewn &ffenestr Anhysbys</translation> <translation id="3850172593216628215">Mae diweddariadau diogelwch wedi dod i ben. Gallwch arbed $50 neu ragor ar Chromebook newydd.</translation> <translation id="385051799172605136">Nôl</translation> +<translation id="3850989673553106152">Newidiwyd y cyfrinair</translation> <translation id="3851428669031642514">Llwythwch sgriptiau anniogel</translation> <translation id="3852215160863921508">Cymorth Mewnbynnu</translation> <translation id="3853549894831560772">Mae <ph name="DEVICE_NAME" /> wedi'i droi ymlaen</translation> @@ -4599,6 +4600,7 @@ <translation id="421182450098841253">&Dangos y Bar Nodau Tudalen</translation> <translation id="4211904048067111541">Stopio defnyddio gydag apiau Android</translation> <translation id="42126664696688958">Allforio</translation> +<translation id="4213540068152645535">Trafferth wrth newid eich cyfrinair</translation> <translation id="42137655013211669">Gwaharddwyd mynediad at yr adnodd hwn gan y gweinydd.</translation> <translation id="4213918571089943508">Cyfrif Google y plentyn</translation> <translation id="4214192212360095377">Diffodd Nawr</translation> @@ -4945,7 +4947,6 @@ <translation id="4462159676511157176">Gweinyddion enw personol</translation> <translation id="4465236939126352372">Mae terfyn amser o <ph name="TIME" /> wedi'i osod ar gyfer <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">Rydych wedi rhoi'r PIN anghywir</translation> -<translation id="4467561276409486506">&Toglo Modd Cryno</translation> <translation id="4469324811108161144">Gall nodiadau gadw hyd at <ph name="CHARACTER_LIMIT" /> nod.</translation> <translation id="4469762931504673593">Mae <ph name="ORIGIN" /> yn gallu golygu ffeiliau yn <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Dewisiadau storfa allanol</translation> @@ -7451,6 +7452,7 @@ <translation id="6278776436938569440">Newid lleoliad</translation> <translation id="6280215091796946657">Mewngofnodi â chyfrif gwahanol</translation> <translation id="6280912520669706465">ARC</translation> +<translation id="6281218688313242284">Rheoli Eich &Cyfrif Google</translation> <translation id="6282180787514676874">{COUNT,plural, =1{Yn fwy na'r terfyn o 1 ddalen o bapur}zero{Yn fwy na'r terfyn o {COUNT} dalen o bapur}two{Yn fwy na'r terfyn o {COUNT} ddalen o bapur}few{Yn fwy na'r terfyn o {COUNT} dalen o bapur}many{Yn fwy na'r terfyn o {COUNT} dalen o bapur}other{Yn fwy na'r terfyn o {COUNT} dalen o bapur}}</translation> <translation id="6282490239556659745">Tynnu <ph name="EMBEDDED_SITE" /> o <ph name="SITE" /></translation> <translation id="6283438600881103103">Byddwch yn cael eich allgofnodi yn awtomatig nawr. @@ -8070,6 +8072,7 @@ <translation id="6745592621698551453">Diweddaru nawr</translation> <translation id="6746124502594467657">Symud i lawr</translation> <translation id="67465227497040338">Dangos cyfrinair ar gyfer <ph name="DOMAIN" /></translation> +<translation id="6746834324024491643">I gael eich cyfrineiriau a rhagor ar eich holl ddyfeisiau, mewngofnodwch fel <ph name="EMAIL" /></translation> <translation id="6748980958975836188">Rydw i wedi darllen ac yn cytuno i <ph name="BEGIN_LINK1" />Delerau Gwasanaeth Google<ph name="END_LINK1" />, <ph name="BEGIN_LINK2" />Telerau Gwasanaeth Ychwanegol Chrome a ChromeOS<ph name="END_LINK2" />.</translation> <translation id="6749077623962119521">Ailosod caniatadau?</translation> <translation id="6749473226660745022">Lluniau</translation> @@ -8327,6 +8330,7 @@ <translation id="6913051485529944333">Ni fyddwch yn gweld Google Calendar ar y dudalen hon eto</translation> <translation id="6914812290245989348">Peidio â gweld unrhyw rybuddion cyn mynd i wefannau anniogel</translation> <translation id="6916590542764765824">Rheoli Estyniadau</translation> +<translation id="6916676294509106572">Calendr Outlook wedi'i guddio</translation> <translation id="6917873303492266709">I rannu, ymuno a chydweithio mewn grwpiau tabiau, agorwch osodiadau a throi Caniatáu mewngofnodi i Chrome ymlaen</translation> <translation id="6918677045355889289">Mae angen diweddariad ChromeOS</translation> <translation id="6918733588290914545">Gosodiad cyflym gyda ffôn Android</translation> @@ -10706,6 +10710,7 @@ <translation id="8625124982056504555">Darllen rhifau cyfresol cydran a dyfais ChromeOS</translation> <translation id="862542460444371744">&Estyniadau</translation> <translation id="8625663000550647058">Ni chaniateir defnyddio'ch meicroffon</translation> +<translation id="8625679025395572221">Gall eich cyfrif fod mewn perygl o hyd.</translation> <translation id="8625916342247441948">Peidio â chaniatáu i wefannau gysylltu â dyfeisiau HID</translation> <translation id="862727964348362408">Wedi'i atal</translation> <translation id="862750493060684461">Storfa CSS</translation>
diff --git a/chrome/app/resources/generated_resources_da.xtb b/chrome/app/resources/generated_resources_da.xtb index fa448d9..d858b5f 100644 --- a/chrome/app/resources/generated_resources_da.xtb +++ b/chrome/app/resources/generated_resources_da.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Dit barn kan bruge en pinkode til at låse enheden op.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">Ordbogen til stavekontrollen for <ph name="LANGUAGE" /> kunne ikke downloades. Prøv igen.</translation> +<translation id="1078029726086090536">Verificer din adgangskode</translation> <translation id="1078037449555275327">Indstillinger for ChromeVox</translation> <translation id="1079242569060319448">Har du glemt pinkoden?</translation> <translation id="1079285777677001938">Funktionerne på visse websites virker muligvis ikke.</translation> @@ -1435,7 +1436,6 @@ <translation id="1980168597243156">Rumstation</translation> <translation id="1981434377190976112">Læse alle dine data på alle websites</translation> <translation id="1982851102516626421">Du er logget ud</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} og {field_2}}one{{field_1}, {field_2} og {field_3}}other{{field_1}, {field_2} og {field_3}}}</translation> <translation id="1984417487208496350">Ingen beskyttelse (anbefales ikke)</translation> <translation id="198507684520034826">Hjælp</translation> <translation id="1986836014090708999">Avancerede lokationsindstillinger</translation> @@ -4095,6 +4095,7 @@ <translation id="3848547754896969219">Åbn i &inkognitovindue</translation> <translation id="3850172593216628215">Du modtager ikke længere sikkerhedsopdateringer. Spar 50 USD eller mere på en ny Chromebook.</translation> <translation id="385051799172605136">Tilbage</translation> +<translation id="3850989673553106152">Adgangskoden er ændret</translation> <translation id="3851428669031642514">Indlæs usikre scripts</translation> <translation id="3852215160863921508">Hjælp til indtastning</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" /> er slået til</translation> @@ -4597,6 +4598,7 @@ <translation id="421182450098841253">&Vis bogmærkelinjen</translation> <translation id="4211904048067111541">Brug ikke med Android-apps</translation> <translation id="42126664696688958">Eksportér</translation> +<translation id="4213540068152645535">Der opstod et problem med at ændre din adgangskode</translation> <translation id="42137655013211669">Serveren har forbudt dig adgang til denne ressource.</translation> <translation id="4213918571089943508">Barnets Google-konto</translation> <translation id="4214192212360095377">Deaktiver nu</translation> @@ -4943,7 +4945,6 @@ <translation id="4462159676511157176">Tilpassede navneservere</translation> <translation id="4465236939126352372">En tidsgrænse på <ph name="TIME" /> blev indstillet for <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">Forkert pinkode</translation> -<translation id="4467561276409486506">&Slå kompakt tilstand til/fra</translation> <translation id="4469324811108161144">Noter kan indeholde op til <ph name="CHARACTER_LIMIT" /> tegn</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> kan redigere filer i <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Præferencer for ekstern lagerplads</translation> @@ -8321,6 +8322,7 @@ <translation id="6913051485529944333">Du får ikke længere vist Google Kalender på denne side</translation> <translation id="6914812290245989348">Få ikke advarsler, inden du går til usikre websites</translation> <translation id="6916590542764765824">Administrer udvidelser</translation> +<translation id="6916676294509106572">Outlook-kalenderen er skjult</translation> <translation id="6917873303492266709">Åbn indstillingerne, og aktivér Tillad login via Chrome for at dele, deltage i og samarbejde i fanegrupper</translation> <translation id="6918677045355889289">ChromeOS skal opdateres</translation> <translation id="6918733588290914545">Hurtig konfiguration med Android-telefon</translation> @@ -10700,6 +10702,7 @@ <translation id="8625124982056504555">Læs serienumre for ChromeOS-enheder og komponenter</translation> <translation id="862542460444371744">&Udvidelser</translation> <translation id="8625663000550647058">Har ikke tilladelse til at bruge din mikrofon</translation> +<translation id="8625679025395572221">Din konto er muligvis stadig i fare.</translation> <translation id="8625916342247441948">Tillad ikke, at websites opretter forbindelse til HID-enheder</translation> <translation id="862727964348362408">På pause</translation> <translation id="862750493060684461">CSS-cache</translation>
diff --git a/chrome/app/resources/generated_resources_de.xtb b/chrome/app/resources/generated_resources_de.xtb index 2ccd8ed..5b2aa9c 100644 --- a/chrome/app/resources/generated_resources_de.xtb +++ b/chrome/app/resources/generated_resources_de.xtb
@@ -1422,7 +1422,6 @@ <translation id="1980168597243156">Raumstation</translation> <translation id="1981434377190976112">Alle deine Daten auf allen Websites lesen</translation> <translation id="1982851102516626421">Du bist abgemeldet</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} und {field_2}}other{{field_1}, {field_2} und {field_3}}}</translation> <translation id="1984417487208496350">Kein Schutz (nicht empfohlen)</translation> <translation id="198507684520034826">Hilfe</translation> <translation id="1986836014090708999">Erweiterte Standorteinstellungen</translation> @@ -4927,7 +4926,6 @@ <translation id="4462159676511157176">Benutzerdefinierte Nameserver</translation> <translation id="4465236939126352372"><ph name="TIME" /> wurde als Zeitbeschränkung für <ph name="APP_NAME" /> festgelegt</translation> <translation id="4467373268340082204">Falsche PIN</translation> -<translation id="4467561276409486506">&Kompakten Modus aktivieren oder deaktivieren</translation> <translation id="4469324811108161144">Notizen können bis zu <ph name="CHARACTER_LIMIT" /> Zeichen enthalten.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> kann Dateien in "<ph name="FOLDERNAME" />" bearbeiten</translation> <translation id="4470957202018033307">Einstellungen für externe Speichergeräte</translation>
diff --git a/chrome/app/resources/generated_resources_el.xtb b/chrome/app/resources/generated_resources_el.xtb index cc69bbd..0cf05b8 100644 --- a/chrome/app/resources/generated_resources_el.xtb +++ b/chrome/app/resources/generated_resources_el.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Το παιδί σας μπορεί να χρησιμοποιήσει ένα PIN για να ξεκλειδώσει τη συσκευή.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">Δεν ήταν δυνατή η λήψη του λεξικού ορθογραφικού ελέγχου για τα <ph name="LANGUAGE" />. Δοκιμάστε ξανά.</translation> +<translation id="1078029726086090536">Επαληθεύστε τον κωδικό πρόσβασής σας</translation> <translation id="1078037449555275327">Ρυθμίσεις ChromeVox</translation> <translation id="1079242569060319448">Ξεχάσατε το PIN;</translation> <translation id="1079285777677001938">Ορισμένες λειτουργίες κάποιων ιστοτόπων μπορεί να μην είναι διαθέσιμες.</translation> @@ -1434,7 +1435,6 @@ <translation id="1980168597243156">Διαστημικός σταθμός</translation> <translation id="1981434377190976112">Ανάγνωση όλων των δεδομένων σας σε όλους τους ιστοτόπους</translation> <translation id="1982851102516626421">Έχετε αποσυνδεθεί</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} και {field_2}}other{{field_1}, {field_2} και {field_3}}}</translation> <translation id="1984417487208496350">Χωρίς προστασία (δεν συνιστάται)</translation> <translation id="198507684520034826">Βοήθεια</translation> <translation id="1986836014090708999">Σύνθετες ρυθμίσεις τοποθεσίας</translation> @@ -4094,6 +4094,7 @@ <translation id="3848547754896969219">Άνοιγμα σε παράθυρο για &ανώνυμη περιήγηση</translation> <translation id="3850172593216628215">Οι ενημερώσεις ασφάλειας έληξαν. Εξοικονομήστε τουλάχιστον 50 $ σε ένα νέο Chromebook.</translation> <translation id="385051799172605136">Πίσω</translation> +<translation id="3850989673553106152">Ο κωδικός πρόσβασης άλλαξε</translation> <translation id="3851428669031642514">Φόρτωση μη ασφαλών σεναρίων</translation> <translation id="3852215160863921508">Βοήθεια εισαγωγής</translation> <translation id="3853549894831560772">Η συσκευή <ph name="DEVICE_NAME" /> ενεργοποιήθηκε</translation> @@ -4596,6 +4597,7 @@ <translation id="421182450098841253">&Εμφάνιση γραμμής σελιδοδεικτών</translation> <translation id="4211904048067111541">Διακοπή χρήσης με εφαρμογές Android</translation> <translation id="42126664696688958">Εξαγωγή</translation> +<translation id="4213540068152645535">Πρόβλημα με την αλλαγή του κωδικού πρόσβασής σας</translation> <translation id="42137655013211669">Η πρόσβαση σε αυτόν τον πόρο απαγορεύεται από το διακομιστή.</translation> <translation id="4213918571089943508">Λογαριασμός Google παιδιού</translation> <translation id="4214192212360095377">Απενεργοποίηση τώρα</translation> @@ -4942,7 +4944,6 @@ <translation id="4462159676511157176">Προσαρμοσμένοι διακομιστές ονομάτων</translation> <translation id="4465236939126352372">Έχει ρυθμιστεί χρονικό όριο <ph name="TIME" /> για την εφαρμογή <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">Λάθος PIN</translation> -<translation id="4467561276409486506">&Εναλλαγή συμπαγούς λειτουργίας</translation> <translation id="4469324811108161144">Μπορούν να αποθηκευτούν έως και <ph name="CHARACTER_LIMIT" /> χαρακτήρες στις σημειώσεις.</translation> <translation id="4469762931504673593">Ο ιστότοπος <ph name="ORIGIN" /> μπορεί να επεξεργαστεί τα αρχεία στον φάκελο <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Προτιμήσεις εξωτερικού αποθηκευτικού χώρου</translation> @@ -8319,6 +8320,7 @@ <translation id="6913051485529944333">Δεν θα δείτε ξανά το Ημερολόγιο Google σε αυτή τη σελίδα</translation> <translation id="6914812290245989348">Δεν εμφανίζονται ειδοποιήσεις πριν από τη μετάβαση σε μη ασφαλείς ιστοτόπους</translation> <translation id="6916590542764765824">Διαχείριση επεκτάσεων</translation> +<translation id="6916676294509106572">Το Ημερολόγιο Outlook είναι κρυφό</translation> <translation id="6917873303492266709">Για να μοιραστείτε, να συμμετάσχετε και να συνεργαστείτε σε ομάδες καρτελών, ανοίξτε τις ρυθμίσεις και ενεργοποιήστε την επιλογή Να επιτρέπεται η σύνδεση στο Chrome</translation> <translation id="6918677045355889289">Απαιτείται ενημέρωση του Chrome OS</translation> <translation id="6918733588290914545">Γρήγορη ρύθμιση με τηλέφωνο Android</translation> @@ -10699,6 +10701,7 @@ <translation id="8625124982056504555">Ανάγνωση σειριακών αριθμών συσκευής και στοιχείων Chrome OS</translation> <translation id="862542460444371744">&Επεκτάσεις</translation> <translation id="8625663000550647058">Δεν επιτρέπεται να χρησιμοποιούν το μικρόφωνό σας</translation> +<translation id="8625679025395572221">Ο λογαριασμός σας μπορεί να βρίσκεται ακόμη σε κίνδυνο.</translation> <translation id="8625916342247441948">Να μην επιτρέπεται στους ιστοτόπους να συνδέονται σε συσκευές HID</translation> <translation id="862727964348362408">Σε αναστολή</translation> <translation id="862750493060684461">Προσωρινή μνήμη CSS</translation>
diff --git a/chrome/app/resources/generated_resources_en-GB.xtb b/chrome/app/resources/generated_resources_en-GB.xtb index 36520d5..265224ef 100644 --- a/chrome/app/resources/generated_resources_en-GB.xtb +++ b/chrome/app/resources/generated_resources_en-GB.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Your child can use a PIN to unlock the device.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">Couldn’t download spell check dictionary for <ph name="LANGUAGE" />. Try again.</translation> +<translation id="1078029726086090536">Verify your password</translation> <translation id="1078037449555275327">ChromeVox settings</translation> <translation id="1079242569060319448">Forgotten PIN?</translation> <translation id="1079285777677001938">Features on some sites may not work.</translation> @@ -1434,7 +1435,6 @@ <translation id="1980168597243156">Space station</translation> <translation id="1981434377190976112">Read all your data on all websites</translation> <translation id="1982851102516626421">You're signed out</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} and {field_2}}other{{field_1}, {field_2} and {field_3}}}</translation> <translation id="1984417487208496350">No protection (not recommended)</translation> <translation id="198507684520034826">Help</translation> <translation id="1986836014090708999">Advanced location settings</translation> @@ -4094,6 +4094,7 @@ <translation id="3848547754896969219">Open in &Incognito window</translation> <translation id="3850172593216628215">Security updates have ended. Save $50 or more on a new Chromebook.</translation> <translation id="385051799172605136">Back</translation> +<translation id="3850989673553106152">Password changed</translation> <translation id="3851428669031642514">Load unsafe scripts</translation> <translation id="3852215160863921508">Input assistance</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" /> is turned on</translation> @@ -4596,6 +4597,7 @@ <translation id="421182450098841253">&Show Bookmarks Bar</translation> <translation id="4211904048067111541">Stop using with Android apps</translation> <translation id="42126664696688958">Export</translation> +<translation id="4213540068152645535">Trouble changing your password</translation> <translation id="42137655013211669">Access to this resource was forbidden by the server.</translation> <translation id="4213918571089943508">Child’s Google Account</translation> <translation id="4214192212360095377">Turn Off Now</translation> @@ -4942,7 +4944,6 @@ <translation id="4462159676511157176">Custom name servers</translation> <translation id="4465236939126352372"><ph name="TIME" /> time limit set for <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">Wrong PIN</translation> -<translation id="4467561276409486506">&Toggle Compact Mode</translation> <translation id="4469324811108161144">Notes can save up to <ph name="CHARACTER_LIMIT" /> characters.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> can edit files in <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">External storage preferences</translation> @@ -8318,6 +8319,7 @@ <translation id="6913051485529944333">You won't see Google Calendar on this page again</translation> <translation id="6914812290245989348">Don't see any warnings before going to insecure sites</translation> <translation id="6916590542764765824">Manage Extensions</translation> +<translation id="6916676294509106572">Outlook Calendar hidden</translation> <translation id="6917873303492266709">To share, join, and collaborate in tab groups, open settings and turn on Allow Chrome sign-in</translation> <translation id="6918677045355889289">Chrome OS update required</translation> <translation id="6918733588290914545">Quick setup with Android phone</translation> @@ -10698,6 +10700,7 @@ <translation id="8625124982056504555">Read ChromeOS device and component serial numbers</translation> <translation id="862542460444371744">&Extensions</translation> <translation id="8625663000550647058">Not allowed to use your microphone</translation> +<translation id="8625679025395572221">Your account may still be at risk.</translation> <translation id="8625916342247441948">Don't allow sites to connect to HID devices</translation> <translation id="862727964348362408">Suspended</translation> <translation id="862750493060684461">CSS cache</translation>
diff --git a/chrome/app/resources/generated_resources_es-419.xtb b/chrome/app/resources/generated_resources_es-419.xtb index cf695f7..a9a8a3d 100644 --- a/chrome/app/resources/generated_resources_es-419.xtb +++ b/chrome/app/resources/generated_resources_es-419.xtb
@@ -1421,7 +1421,6 @@ <translation id="1980168597243156">Estación espacial</translation> <translation id="1981434377190976112">Leer todos tus datos en todos los sitios web</translation> <translation id="1982851102516626421">No accediste</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} y {field_2}}other{{field_1}, {field_2} y {field_3}}}</translation> <translation id="1984417487208496350">Sin protección (opción no recomendada)</translation> <translation id="198507684520034826">Ayuda</translation> <translation id="1986836014090708999">Configuración avanzada de ubicación</translation> @@ -4926,7 +4925,6 @@ <translation id="4462159676511157176">Servidores de nombres personalizados</translation> <translation id="4465236939126352372">Límite de tiempo establecido para <ph name="APP_NAME" />: <ph name="TIME" /></translation> <translation id="4467373268340082204">PIN incorrecto</translation> -<translation id="4467561276409486506">&Activar o desactivar el modo compacto</translation> <translation id="4469324811108161144">Las notas pueden ahorrar hasta <ph name="CHARACTER_LIMIT" /> caracteres.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> puede editar archivos en <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Preferencias de almacenamiento externo</translation> @@ -7432,6 +7430,7 @@ <translation id="6278776436938569440">Cambiar ubicación</translation> <translation id="6280215091796946657">Acceder con otra cuenta</translation> <translation id="6280912520669706465">ARC</translation> +<translation id="6281218688313242284">Administrar tu Cuenta de &Google</translation> <translation id="6282180787514676874">{COUNT,plural, =1{Se superó el límite de 1 hoja de papel}other{Se superó el límite de {COUNT} hojas de papel}}</translation> <translation id="6282490239556659745">Quitar <ph name="EMBEDDED_SITE" /> de <ph name="SITE" /></translation> <translation id="6283438600881103103">Saldrás automáticamente. @@ -8043,6 +8042,7 @@ <translation id="6745592621698551453">Actualizar ahora</translation> <translation id="6746124502594467657">Mover hacia abajo</translation> <translation id="67465227497040338">Mostrar contraseña de <ph name="DOMAIN" /></translation> +<translation id="6746834324024491643">Para ver tus contraseñas y más en todos tus dispositivos, accede como <ph name="EMAIL" /></translation> <translation id="6748980958975836188">Leí y acepté las <ph name="BEGIN_LINK1" />Condiciones del Servicio de Google<ph name="END_LINK1" /> y las <ph name="BEGIN_LINK2" />Condiciones del Servicio Adicionales de Chrome y ChromeOS<ph name="END_LINK2" />.</translation> <translation id="6749077623962119521">¿Deseas restablecer los permisos?</translation> <translation id="6749473226660745022">Fotos</translation>
diff --git a/chrome/app/resources/generated_resources_es.xtb b/chrome/app/resources/generated_resources_es.xtb index 830f8aa0..3d6f22d 100644 --- a/chrome/app/resources/generated_resources_es.xtb +++ b/chrome/app/resources/generated_resources_es.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Tu hijo/a puede usar un PIN para desbloquear el dispositivo.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">No se ha podido descargar el diccionario de revisión ortográfica de <ph name="LANGUAGE" />. Vuelve a intentarlo.</translation> +<translation id="1078029726086090536">Verificar tu contraseña</translation> <translation id="1078037449555275327">Configuración de ChromeVox</translation> <translation id="1079242569060319448">¿Has olvidado tu PIN?</translation> <translation id="1079285777677001938">Es posible que ciertas funciones de algunos sitios no estén operativas.</translation> @@ -1424,7 +1425,6 @@ <translation id="1980168597243156">Estación espacial</translation> <translation id="1981434377190976112">Leer todos tus datos en todos los sitios web</translation> <translation id="1982851102516626421">Se ha cerrado tu sesión</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} y {field_2}}other{{field_1}, {field_2} y {field_3}}}</translation> <translation id="1984417487208496350">Sin protección (no recomendado)</translation> <translation id="198507684520034826">Ayuda</translation> <translation id="1986836014090708999">Ajustes de ubicación avanzados</translation> @@ -4082,6 +4082,7 @@ <translation id="3848547754896969219">Abrir en una ventana de &incógnito</translation> <translation id="3850172593216628215">Este dispositivo no recibirá más actualizaciones de seguridad. Ahorra 50 $ o más al adquirir un Chromebook nuevo.</translation> <translation id="385051799172605136">Volver</translation> +<translation id="3850989673553106152">Se ha cambiado la contraseña</translation> <translation id="3851428669031642514">Cargar scripts no seguros</translation> <translation id="3852215160863921508">Asistencia de introducción de texto</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" /> está activada</translation> @@ -4583,6 +4584,7 @@ <translation id="421182450098841253">&Mostrar barra de marcadores</translation> <translation id="4211904048067111541">Dejar de usar con aplicaciones Android</translation> <translation id="42126664696688958">Exportar</translation> +<translation id="4213540068152645535">No se ha podido cambiar la contraseña</translation> <translation id="42137655013211669">El servidor ha prohibido el acceso a este recurso.</translation> <translation id="4213918571089943508">Cuenta de Google de tu hijo/a</translation> <translation id="4214192212360095377">Desactivar ahora</translation> @@ -4929,7 +4931,6 @@ <translation id="4462159676511157176">Servidores de nombres personalizados</translation> <translation id="4465236939126352372">Se ha definido un límite de tiempo de <ph name="TIME" /> para <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">PIN incorrecto</translation> -<translation id="4467561276409486506">&Alternar modo Compacto</translation> <translation id="4469324811108161144">Las notas pueden guardar hasta <ph name="CHARACTER_LIMIT" /> caracteres.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> puede editar los archivos que haya en <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Preferencias de almacenamiento externo</translation> @@ -8303,6 +8304,7 @@ <translation id="6913051485529944333">No volverás a ver Google Calendar en esta página</translation> <translation id="6914812290245989348">No mostrar ninguna advertencia antes de acceder a sitios no seguros</translation> <translation id="6916590542764765824">Gestionar extensiones</translation> +<translation id="6916676294509106572">Calendario de Outlook oculto</translation> <translation id="6917873303492266709">Para compartir, unirte y colaborar en grupos de pestañas, abre la configuración y activa Permitir el inicio de sesión en Chrome</translation> <translation id="6918677045355889289">Es necesario actualizar ChromeOS</translation> <translation id="6918733588290914545">Configuración rápida con un teléfono Android</translation> @@ -10683,6 +10685,7 @@ <translation id="8625124982056504555">Leer los números de serie del dispositivo ChromeOS y de los componentes</translation> <translation id="862542460444371744">&Extensiones</translation> <translation id="8625663000550647058">No puede usar tu micrófono</translation> +<translation id="8625679025395572221">Tu cuenta podría seguir en peligro.</translation> <translation id="8625916342247441948">No permitir que los sitios se conecten a dispositivos HID</translation> <translation id="862727964348362408">En suspensión</translation> <translation id="862750493060684461">Caché de CSS</translation>
diff --git a/chrome/app/resources/generated_resources_et.xtb b/chrome/app/resources/generated_resources_et.xtb index 6f4de64d..21940eb 100644 --- a/chrome/app/resources/generated_resources_et.xtb +++ b/chrome/app/resources/generated_resources_et.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Teie laps saab seadme avamiseks kasutada PIN-koodi.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">Õigekirjakontrolli sõnastikku ei õnnestunud <ph name="LANGUAGE" /> keele jaoks alla laadida. Proovige uuesti.</translation> +<translation id="1078029726086090536">Kinnitage oma parool</translation> <translation id="1078037449555275327">ChromeVoxi seaded</translation> <translation id="1079242569060319448">Kas unustasite PIN-koodi?</translation> <translation id="1079285777677001938">Funktsioonid ei pruugi mõnel saidil toimida.</translation> @@ -1425,7 +1426,6 @@ <translation id="1980168597243156">Kosmosejaam</translation> <translation id="1981434377190976112">Kõigil veebisaitidel kõigi teie andmete lugemine</translation> <translation id="1982851102516626421">Olete välja logitud</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} ja {field_2}}other{{field_1}, {field_2} ja {field_3}}}</translation> <translation id="1984417487208496350">Kaitseta (ei ole soovitatav)</translation> <translation id="198507684520034826">Abi</translation> <translation id="1986836014090708999">Täpsemad asukohaseaded</translation> @@ -4085,6 +4085,7 @@ <translation id="3848547754896969219">Ava &inkognito aknas</translation> <translation id="3850172593216628215">Turvavärskendused on lõppenud. Säästke uue Chromebooki ostmisel 50 dollarit või rohkem.</translation> <translation id="385051799172605136">Tagasi</translation> +<translation id="3850989673553106152">Parool on muudetud</translation> <translation id="3851428669031642514">Laadi ohtlikud skriptid</translation> <translation id="3852215160863921508">Sisestusabi</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" /> on sisse lülitatud</translation> @@ -4587,6 +4588,7 @@ <translation id="421182450098841253">Kuva &järjehoidjariba</translation> <translation id="4211904048067111541">Lõpeta Androidi rakendustega kasutamine</translation> <translation id="42126664696688958">Eksportimine</translation> +<translation id="4213540068152645535">Parooli muutmisel ilmnes probleem</translation> <translation id="42137655013211669">Server keelas juurdepääsu ressursile.</translation> <translation id="4213918571089943508">Lapse Google’i konto</translation> <translation id="4214192212360095377">Lülita kohe välja</translation> @@ -4933,7 +4935,6 @@ <translation id="4462159676511157176">Kohandatud nimeserverid</translation> <translation id="4465236939126352372">Rakendusele <ph name="APP_NAME" /> on määratud ajapiirang <ph name="TIME" /></translation> <translation id="4467373268340082204">Vale PIN-kood</translation> -<translation id="4467561276409486506">&Kompaktse režiimi lüliti</translation> <translation id="4469324811108161144">Märkmetesse saab salvestada kuni <ph name="CHARACTER_LIMIT" /> tähemärki.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> saab muuta kaustas <ph name="FOLDERNAME" /> olevaid faile</translation> <translation id="4470957202018033307">Välise salvestusruumi eelistused</translation> @@ -8309,6 +8310,7 @@ <translation id="6913051485529944333">Te ei näe enam sellel lehel Google'i kalendrit</translation> <translation id="6914812290245989348">Enne ebaturvalistele saitidele minemist ei kuvata hoiatusi</translation> <translation id="6916590542764765824">Laienduste haldamine</translation> +<translation id="6916676294509106572">Outlook Calendar on peidetud</translation> <translation id="6917873303492266709">Vahelehegruppide jagamiseks, nendega liitumiseks ja nendes koos töötamiseks avage seaded ja lülitage sisse valik Luba Chrome'i sisselogimine</translation> <translation id="6918677045355889289">Chrome OS-i värskendus on nõutav</translation> <translation id="6918733588290914545">Kiirseadistamine Androidi telefoniga</translation> @@ -10689,6 +10691,7 @@ <translation id="8625124982056504555">ChromeOS-i seadme ja komponentide seerianumbrite lugemine</translation> <translation id="862542460444371744">&Laiendused</translation> <translation id="8625663000550647058">Pole lubatud kasutada teie mikrofoni</translation> +<translation id="8625679025395572221">Teie konto võib olla endiselt ohus.</translation> <translation id="8625916342247441948">Ära luba saitidel HID-seadmetega ühendust luua</translation> <translation id="862727964348362408">Peatatud</translation> <translation id="862750493060684461">CSS-i vahemälu</translation>
diff --git a/chrome/app/resources/generated_resources_eu.xtb b/chrome/app/resources/generated_resources_eu.xtb index 53cdb7a..84ba2f5 100644 --- a/chrome/app/resources/generated_resources_eu.xtb +++ b/chrome/app/resources/generated_resources_eu.xtb
@@ -1424,7 +1424,6 @@ <translation id="1980168597243156">Espazio-estazioa</translation> <translation id="1981434377190976112">Edozein webgunetan dauzkazun datu guztiak irakurri.</translation> <translation id="1982851102516626421">Saioa amaitu duzu</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} eta {field_2}}other{{field_1}, {field_2} eta {field_3}}}</translation> <translation id="1984417487208496350">Babesik gabe (ez da gomendatzen)</translation> <translation id="198507684520034826">Laguntza</translation> <translation id="1986836014090708999">Kokapen-ezarpen aurreratuak</translation> @@ -4927,7 +4926,6 @@ <translation id="4462159676511157176">Izen-zerbitzari pertsonalizatuak</translation> <translation id="4465236939126352372"><ph name="APP_NAME" /> aplikazioak denbora-muga hau dauka ezarrita: <ph name="TIME" /></translation> <translation id="4467373268340082204">PIN okerra</translation> -<translation id="4467561276409486506">&Aktibatu edo desaktibatu modu xehatuena</translation> <translation id="4469324811108161144">Oharrek <ph name="CHARACTER_LIMIT" /> karaktere izan ditzakete gehienez.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> webguneak <ph name="FOLDERNAME" /> karpetako fitxategiak edita ditzake</translation> <translation id="4470957202018033307">Kanpoko memoria erabiltzeko hobespenak</translation> @@ -7428,6 +7426,7 @@ <translation id="6278776436938569440">Aldatu kokapena</translation> <translation id="6280215091796946657">Hasi saioa beste kontu batekin</translation> <translation id="6280912520669706465">ARC</translation> +<translation id="6281218688313242284">Kudeatu &Google-ko kontua</translation> <translation id="6282180787514676874">{COUNT,plural, =1{1 orriko muga gainditzen du}other{{COUNT} orriko muga gainditzen du}}</translation> <translation id="6282490239556659745">Kendu <ph name="EMBEDDED_SITE" /> webgunea <ph name="SITE" /> webgunetik</translation> <translation id="6283438600881103103">Saioa automatikoki amaituko da. @@ -8039,6 +8038,7 @@ <translation id="6745592621698551453">Eguneratu</translation> <translation id="6746124502594467657">Eraman behera</translation> <translation id="67465227497040338">Erakutsi <ph name="DOMAIN" /> domeinuko pasahitza</translation> +<translation id="6746834324024491643">Pasahitz guztiak eta gauza gehiago gailu guztietan lortzeko, hasi saioa <ph name="EMAIL" /> gisa</translation> <translation id="6748980958975836188">Irakurri ditut eta onartzen ditut <ph name="BEGIN_LINK1" />Google-ren Zerbitzu-baldintzak<ph name="END_LINK1" /> eta <ph name="BEGIN_LINK2" />Chrome-ren eta ChromeOS-ren Zerbitzu-baldintza gehigarriak<ph name="END_LINK2" />.</translation> <translation id="6749077623962119521">Baimenak berrezarri nahi dituzu?</translation> <translation id="6749473226660745022">Argazkiak</translation>
diff --git a/chrome/app/resources/generated_resources_fa.xtb b/chrome/app/resources/generated_resources_fa.xtb index 4179d15b..664f3f0 100644 --- a/chrome/app/resources/generated_resources_fa.xtb +++ b/chrome/app/resources/generated_resources_fa.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">فرزندتان میتواند برای باز کردن قفل دستگاه از پین استفاده کند.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">واژهنامه غلطگیر املای زبان <ph name="LANGUAGE" /> بارگیری نشد. دوباره امتحان کنید.</translation> +<translation id="1078029726086090536">درستیسنجی کردن گذرواژه</translation> <translation id="1078037449555275327">تنظیمات ChromeVox</translation> <translation id="1079242569060319448">پین را فراموش کردهاید؟</translation> <translation id="1079285777677001938">ممکن است ویژگیهای برخیاز سایتها کار نکند.</translation> @@ -1431,7 +1432,6 @@ <translation id="1980168597243156">ایستگاه فضایی</translation> <translation id="1981434377190976112">همه دادههای شما را در همه وبسایتها بخواند</translation> <translation id="1982851102516626421">از سیستم خارج شدهاید</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} و {field_2}}one{{field_1}، {field_2}، و {field_3}}other{{field_1}، {field_2}، و {field_3}}}</translation> <translation id="1984417487208496350">بدون محافظت (توصیه نمیشود)</translation> <translation id="198507684520034826">راهنما</translation> <translation id="1986836014090708999">تنظیمات پیشرفته مکان</translation> @@ -4091,6 +4091,7 @@ <translation id="3848547754896969219">باز کردن در «پنجره ناشناس»</translation> <translation id="3850172593216628215">بهروزرسانیهای امنیتی بهاتمام رسیده است. هنگام خرید Chromebook جدید ۵۰ دلار یا بیشتر تخفیف بگیرید.</translation> <translation id="385051799172605136">برگشتن</translation> +<translation id="3850989673553106152">گذرواژه تغییر کرد</translation> <translation id="3851428669031642514">بارگیری اسکریپتهای ناامن</translation> <translation id="3852215160863921508">دستیار ورودی</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" /> روشن است</translation> @@ -4593,6 +4594,7 @@ <translation id="421182450098841253">&نمایش نوار نشانکها</translation> <translation id="4211904048067111541">توقف استفاده در برنامههای Android</translation> <translation id="42126664696688958">صادر کردن</translation> +<translation id="4213540068152645535">مشکلی در تغییر گذرواژهتان روی داد</translation> <translation id="42137655013211669">سرور، دسترسی به این منبع را ممنوع کرد.</translation> <translation id="4213918571089943508">«حساب Google» کودک</translation> <translation id="4214192212360095377">اکنون خاموش شود</translation> @@ -4939,7 +4941,6 @@ <translation id="4462159676511157176">سرورهای نام سفارشی</translation> <translation id="4465236939126352372"><ph name="TIME" /> محدودیت زمانی برای <ph name="APP_NAME" /> تنظیم شده است</translation> <translation id="4467373268340082204">پین اشتباه است</translation> -<translation id="4467561276409486506">&روشن/خاموش کردن «حالت فشرده»</translation> <translation id="4469324811108161144">یادداشت باید حداکثر <ph name="CHARACTER_LIMIT" /> نویسه داشته باشد.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> میتواند فایلهای <ph name="FOLDERNAME" /> را ویرایش کند</translation> <translation id="4470957202018033307">اولویتهای فضای ذخیرهسازی خارجی</translation> @@ -8317,6 +8318,7 @@ <translation id="6913051485529944333">«تقویم Google» را دیگر در این صفحه نخواهید دید</translation> <translation id="6914812290245989348">عدم نمایش هشدار قبلاز رفتن به سایتهای ناامن</translation> <translation id="6916590542764765824">مدیریت افزونهها</translation> +<translation id="6916676294509106572">تقویم Outlook پنهان است</translation> <translation id="6917873303492266709">برای همرسانی، پیوستن، و مشارکت در گروههای برگه، تنظیمات را باز کنید و «مجاز کردن ورود به سیستم Chrome» را روشن کنید</translation> <translation id="6918677045355889289">بهروزرسانی ChromeOS الزامی است</translation> <translation id="6918733588290914545">راهاندازی سریع با تلفن Android</translation> @@ -10696,6 +10698,7 @@ <translation id="8625124982056504555">خواندن شمارههای سریال عنصر و دستگاه ChromeOS</translation> <translation id="862542460444371744">&برنامه های افزودنی</translation> <translation id="8625663000550647058">اجازه ندارد از میکروفون استفاده کند</translation> +<translation id="8625679025395572221">ممکن است حسابتان هنوز درمعرض خطر باشد.</translation> <translation id="8625916342247441948">به سایتها اجازه داده نشود به دستگاههای HID متصل شوند</translation> <translation id="862727964348362408">معلق شد</translation> <translation id="862750493060684461">حافظه نهان CSS</translation>
diff --git a/chrome/app/resources/generated_resources_fi.xtb b/chrome/app/resources/generated_resources_fi.xtb index b175a234..74bc2d0 100644 --- a/chrome/app/resources/generated_resources_fi.xtb +++ b/chrome/app/resources/generated_resources_fi.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Lapsi voi avata tämän laitteen PIN-koodilla.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">Oikeinkirjoitussanakirjan (<ph name="LANGUAGE" />) lataaminen epäonnistui. Yritä uudelleen.</translation> +<translation id="1078029726086090536">Vahvista salasana</translation> <translation id="1078037449555275327">ChromeVox-asetukset</translation> <translation id="1079242569060319448">Unohtuiko PIN-koodi?</translation> <translation id="1079285777677001938">Joidenkin sivustojen ominaisuudet eivät välttämättä toimi.</translation> @@ -1433,7 +1434,6 @@ <translation id="1980168597243156">Avaruusasema</translation> <translation id="1981434377190976112">Lukea dataasi kaikilla sivustoilla</translation> <translation id="1982851102516626421">Olet kirjautunut ulos</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} ja {field_2}}other{{field_1}, {field_2} ja {field_3}}}</translation> <translation id="1984417487208496350">Ei suojausta (ei suositella)</translation> <translation id="198507684520034826">Ohje</translation> <translation id="1986836014090708999">Sijainnin lisäasetukset</translation> @@ -4093,6 +4093,7 @@ <translation id="3848547754896969219">Avaa &incognito-ikkunassa</translation> <translation id="3850172593216628215">Tietoturvapäivitykset ovat päättyneet. Säästä ainakin 50 $ uudesta Chromebookista.</translation> <translation id="385051799172605136">Takaisin</translation> +<translation id="3850989673553106152">Salasana vaihdettu</translation> <translation id="3851428669031642514">Lataa suojaamattomat koodit</translation> <translation id="3852215160863921508">Syöttöapu</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" /> on laitettu päälle</translation> @@ -4592,6 +4593,7 @@ <translation id="421182450098841253">Näytä kirjanmerkkipalkki</translation> <translation id="4211904048067111541">Lopeta käyttäminen Android-sovelluksissa</translation> <translation id="42126664696688958">Vie</translation> +<translation id="4213540068152645535">Salasanan vaihtamisessa on ongelmia</translation> <translation id="42137655013211669">Palvelin kielsi tämän resurssin käytön.</translation> <translation id="4213918571089943508">Lapsen Google-tili</translation> <translation id="4214192212360095377">Laita pois päältä</translation> @@ -4938,7 +4940,6 @@ <translation id="4462159676511157176">Omat nimipalvelimet</translation> <translation id="4465236939126352372">Aikaraja (<ph name="TIME" />) otettu käyttöön: <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">Väärä PIN-koodi</translation> -<translation id="4467561276409486506">&Laita kompakti tila päälle/pois</translation> <translation id="4469324811108161144">Muistiinpanoissa voi olla enintään <ph name="CHARACTER_LIMIT" /> merkkiä.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> saa muokata kansion <ph name="FOLDERNAME" /> tiedostoja</translation> <translation id="4470957202018033307">Ulkoisen tallennustilan asetukset</translation> @@ -7444,6 +7445,7 @@ <translation id="6278776436938569440">Vaihda sijaintia</translation> <translation id="6280215091796946657">Kirjaudu sisään toisella tilillä</translation> <translation id="6280912520669706465">ARC</translation> +<translation id="6281218688313242284">Hallinnoi &Google-tiliäsi</translation> <translation id="6282180787514676874">{COUNT,plural, =1{Ylittää yhden paperiarkin rajan}other{Ylittää {COUNT} paperiarkin rajan}}</translation> <translation id="6282490239556659745">Poista <ph name="EMBEDDED_SITE" /> täältä: <ph name="SITE" /></translation> <translation id="6283438600881103103">Sinut kirjataan nyt automaattisesti ulos. @@ -8055,6 +8057,7 @@ <translation id="6745592621698551453">Päivitä nyt</translation> <translation id="6746124502594467657">Siirrä alas</translation> <translation id="67465227497040338">Näytä salasana: <ph name="DOMAIN" /></translation> +<translation id="6746834324024491643">Kirjaudu sisään käyttäjänä <ph name="EMAIL" />, niin voit käyttää salasanojasi ja muita tietoja kaikilla laitteillasi</translation> <translation id="6748980958975836188">Olen lukenut ja hyväksyn <ph name="BEGIN_LINK1" />Googlen käyttöehdot<ph name="END_LINK1" /> sekä <ph name="BEGIN_LINK2" />Chromen ja ChromeOS:n lisäkäyttöehdot<ph name="END_LINK2" />.</translation> <translation id="6749077623962119521">Nollataanko luvat?</translation> <translation id="6749473226660745022">Kuvat</translation> @@ -8312,6 +8315,7 @@ <translation id="6913051485529944333">Et enää näe Google Kalenteria tällä sivulla</translation> <translation id="6914812290245989348">Älä näytä varoituksia ennen suojaamattomille sivustoille siirtymistä</translation> <translation id="6916590542764765824">Hallinnoi laajennuksia</translation> +<translation id="6916676294509106572">Outlookin kalenteri piilotettu</translation> <translation id="6917873303492266709">Avaa asetukset ja laita Salli Chrome-kirjautuminen päälle, jotta voit jakaa välilehtiryhmiä, liittyä niihin ja yhteiskäyttää niitä</translation> <translation id="6918677045355889289">Chrome-käyttöjärjestelmän päivitys vaaditaan</translation> <translation id="6918733588290914545">Nopea käyttöönotto Android-puhelimella</translation> @@ -10691,6 +10695,7 @@ <translation id="8625124982056504555">Lukea Chrome-käyttöjärjestelmää käyttävien laitteiden ja osien sarjanumerot</translation> <translation id="862542460444371744">Laaj&ennukset</translation> <translation id="8625663000550647058">Mikrofonin käyttö kielletty</translation> +<translation id="8625679025395572221">Tilisi voi edelleen olla vaarassa.</translation> <translation id="8625916342247441948">Älä salli sivustojen yhdistää HID-laitteisiin</translation> <translation id="862727964348362408">Pysäytetty</translation> <translation id="862750493060684461">CSS-välimuisti</translation>
diff --git a/chrome/app/resources/generated_resources_fil.xtb b/chrome/app/resources/generated_resources_fil.xtb index 026e813..5d6ce353 100644 --- a/chrome/app/resources/generated_resources_fil.xtb +++ b/chrome/app/resources/generated_resources_fil.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Puwedeng gumamit ng PIN ang iyong anak para i-unlock ang device.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">Hindi ma-download ang diksyunaryo ng pang-check ng pagbabaybay para sa <ph name="LANGUAGE" />. Subukan ulit.</translation> +<translation id="1078029726086090536">I-verify ang iyong password</translation> <translation id="1078037449555275327">Mga setting ng ChromeVox</translation> <translation id="1079242569060319448">Nakalimutan ang PIN?</translation> <translation id="1079285777677001938">Posibleng hindi gumana ang mga feature sa ilang site.</translation> @@ -1435,7 +1436,6 @@ <translation id="1980168597243156">Space station</translation> <translation id="1981434377190976112">Basahin ang lahat ng iyong data sa lahat ng website</translation> <translation id="1982851102516626421">Naka-sign out ka</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} at {field_2}}one{{field_1}, {field_2}, at {field_3}}other{{field_1}, {field_2}, at {field_3}}}</translation> <translation id="1984417487208496350">Walang proteksyon (hindi inirerekomenda)</translation> <translation id="198507684520034826">Tulong</translation> <translation id="1986836014090708999">Mga advanced na setting ng lokasyon</translation> @@ -4095,6 +4095,7 @@ <translation id="3848547754896969219">Buksan lahat sa &Incognito window</translation> <translation id="3850172593216628215">Natapos na ang mga update sa seguridad. Makatipid ng $50 o higit pa sa bagong Chromebook.</translation> <translation id="385051799172605136">Bumalik</translation> +<translation id="3850989673553106152">Binago ang password</translation> <translation id="3851428669031642514">I-load ang mga hindi ligtas na script</translation> <translation id="3852215160863921508">Tulong sa Pag-input</translation> <translation id="3853549894831560772">Na-on ang <ph name="DEVICE_NAME" /></translation> @@ -4597,6 +4598,7 @@ <translation id="421182450098841253">&Ipakita ang Bookmarks Bar</translation> <translation id="4211904048067111541">Huwag nang gamitin sa mga Android app</translation> <translation id="42126664696688958">I-export</translation> +<translation id="4213540068152645535">Nagkakaproblema sa pagpapalit ng iyong password</translation> <translation id="42137655013211669">Ipinagbabawal ng server ang access sa mapagkukunang ito.</translation> <translation id="4213918571089943508">Google Account ng Anak</translation> <translation id="4214192212360095377">I-off Ngayon</translation> @@ -4943,7 +4945,6 @@ <translation id="4462159676511157176">Custom na mga server ng pangalan</translation> <translation id="4465236939126352372"><ph name="TIME" /> ang limitasyon sa oras na itinakda para sa <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">Maling PIN</translation> -<translation id="4467561276409486506">&I-toggle ang Compact Mode</translation> <translation id="4469324811108161144">Puwedeng mag-save ng hanggang <ph name="CHARACTER_LIMIT" /> character ang mga tala.</translation> <translation id="4469762931504673593">Puwedeng i-edit ng <ph name="ORIGIN" /> ang mga file sa <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Mga kagustuhan sa external na storage</translation> @@ -8321,6 +8322,7 @@ <translation id="6913051485529944333">Hindi mo na ulit makikita ang Google Calendar sa page na ito</translation> <translation id="6914812290245989348">Walang makikitang anumang babala bago pumunta sa mga hindi secure na site</translation> <translation id="6916590542764765824">Pamahalaan ang Mga Extension</translation> +<translation id="6916676294509106572">Naka-hide ang Outlook Calendar</translation> <translation id="6917873303492266709">Para mag-share ng, sumali sa, at mag-collaborate sa mga grupo ng tab, buksan ang mga setting at i-on ang Payagan ang pag-sign in sa Chrome</translation> <translation id="6918677045355889289">Kailangan ng pag-update sa ChromeOS</translation> <translation id="6918733588290914545">Mabilis na pag-set up gamit ang Android phone</translation> @@ -10702,6 +10704,7 @@ <translation id="8625124982056504555">Basahin ang mga serial number ng ChromeOS device at bahagi</translation> <translation id="862542460444371744">&Mga Extension</translation> <translation id="8625663000550647058">Hindi pinapayagang gamitin ang iyong mikropono</translation> +<translation id="8625679025395572221">Posibleng nasa panganib pa rin ang iyong account.</translation> <translation id="8625916342247441948">Huwag payagan ang mga site na kumonekta sa mga HID device</translation> <translation id="862727964348362408">Sinuspinde</translation> <translation id="862750493060684461">CSS cache</translation>
diff --git a/chrome/app/resources/generated_resources_fr-CA.xtb b/chrome/app/resources/generated_resources_fr-CA.xtb index eb04699..ac561f4 100644 --- a/chrome/app/resources/generated_resources_fr-CA.xtb +++ b/chrome/app/resources/generated_resources_fr-CA.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Votre enfant peut utiliser un NIP pour déverrouiller l'appareil.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">Impossible de télécharger le dictionnaire du correcteur orthographique pour la langue suivante : <ph name="LANGUAGE" />. Réessayez.</translation> +<translation id="1078029726086090536">Confirmer votre mot de passe</translation> <translation id="1078037449555275327">Paramètres ChromeVox</translation> <translation id="1079242569060319448">Vous avez oublié votre NIP?</translation> <translation id="1079285777677001938">Les fonctionnalités de certains sites pourraient ne pas fonctionner.</translation> @@ -1425,7 +1426,6 @@ <translation id="1980168597243156">Station spatiale</translation> <translation id="1981434377190976112">Lire l'intégralité de vos données sur tous les sites Web</translation> <translation id="1982851102516626421">Vous êtes déconnecté</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} et {field_2}}one{{field_1}, {field_2} et {field_3}}other{{field_1}, {field_2} et {field_3}}}</translation> <translation id="1984417487208496350">Aucune protection (non recommandé)</translation> <translation id="198507684520034826">Aide</translation> <translation id="1986836014090708999">Paramètres de localisation avancés</translation> @@ -4084,6 +4084,7 @@ <translation id="3848547754896969219">Ouvrir dans une &fenêtre de navigation privée</translation> <translation id="3850172593216628215">Les mises à jour de sécurité ont cessé. Économisez 50 $ ou plus sur un nouveau Chromebook.</translation> <translation id="385051799172605136">Retour</translation> +<translation id="3850989673553106152">Mot de passe modifié</translation> <translation id="3851428669031642514">Charger des scripts non sécurisés</translation> <translation id="3852215160863921508">Assistance d'entrée</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" /> est activé</translation> @@ -4586,6 +4587,7 @@ <translation id="421182450098841253">&Afficher la barre des favoris</translation> <translation id="4211904048067111541">Arrêter d'utiliser avec les applications Android</translation> <translation id="42126664696688958">Exporter</translation> +<translation id="4213540068152645535">Problème de modification du mot de passe</translation> <translation id="42137655013211669">L'accès à ces ressources a été interdit par le serveur.</translation> <translation id="4213918571089943508">Compte Google de l'enfant</translation> <translation id="4214192212360095377">Désactiver maintenant</translation> @@ -4932,7 +4934,6 @@ <translation id="4462159676511157176">Serveurs de noms personnalisés</translation> <translation id="4465236939126352372">Une limite de temps de <ph name="TIME" /> a été définie pour <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">NIP incorrect</translation> -<translation id="4467561276409486506">&Basculer en mode Compact</translation> <translation id="4469324811108161144">Les notes peuvent contenir jusqu'à <ph name="CHARACTER_LIMIT" /> caractères.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> peut modifier les fichiers dans le dossier <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Préférences de stockage externe</translation> @@ -8308,6 +8309,7 @@ <translation id="6913051485529944333">Vous ne verrez plus Google Agenda sur cette page</translation> <translation id="6914812290245989348">Ne pas afficher d'avertissement avant d'accéder à des sites non sécurisés</translation> <translation id="6916590542764765824">Gérer les extensions</translation> +<translation id="6916676294509106572">Calendrier Outlook masqué</translation> <translation id="6917873303492266709">Pour partager et rejoindre des groupes d'onglets ainsi que collaborer dans ces derniers, ouvrez les paramètres et activez Autoriser la connexion à Chrome</translation> <translation id="6918677045355889289">Une mise à jour de Chrome OS est requise</translation> <translation id="6918733588290914545">Configuration rapide avec un téléphone Android</translation> @@ -10686,6 +10688,7 @@ <translation id="8625124982056504555">Lire les numéros de série de l'appareil et des composantes ChromeOS</translation> <translation id="862542460444371744">&Extensions</translation> <translation id="8625663000550647058">Non autorisés à utiliser votre microphone</translation> +<translation id="8625679025395572221">Il se peut que votre compte soit encore menacé.</translation> <translation id="8625916342247441948">Ne pas autoriser les sites à se connecter à des appareils HID</translation> <translation id="862727964348362408">Suspendu</translation> <translation id="862750493060684461">Cache CSS</translation>
diff --git a/chrome/app/resources/generated_resources_fr.xtb b/chrome/app/resources/generated_resources_fr.xtb index a9ac16b..af37b873 100644 --- a/chrome/app/resources/generated_resources_fr.xtb +++ b/chrome/app/resources/generated_resources_fr.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Votre enfant peut l'utiliser pour déverrouiller l'appareil.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">Impossible de télécharger le dictionnaire du correcteur orthographique pour la langue suivante : <ph name="LANGUAGE" />. Veuillez réessayer.</translation> +<translation id="1078029726086090536">Valider votre mot de passe</translation> <translation id="1078037449555275327">Paramètres ChromeVox</translation> <translation id="1079242569060319448">Code oublié ?</translation> <translation id="1079285777677001938">Il est possible que les fonctionnalités de certains sites ne fonctionnent pas.</translation> @@ -1425,7 +1426,6 @@ <translation id="1980168597243156">Station spatiale</translation> <translation id="1981434377190976112">Lire toutes vos données sur tous les sites Web</translation> <translation id="1982851102516626421">Vous êtes déconnecté</translation> -<translation id="1983074053702805575">{count,plural, =1{votre {field_1}}=2{vos {field_1} et {field_2}}one{vos {field_1}, {field_2} et {field_3}}other{vos {field_1}, {field_2} et {field_3}}}</translation> <translation id="1984417487208496350">Aucune protection (non recommandé)</translation> <translation id="198507684520034826">Aide</translation> <translation id="1986836014090708999">Paramètres de localisation avancés</translation> @@ -4080,6 +4080,7 @@ <translation id="3848547754896969219">Ouvrir dans une fenêtre de navigation &privée</translation> <translation id="3850172593216628215">Vous ne recevrez plus de mises à jour de sécurité. Économisez 50 $ ou plus sur un nouveau Chromebook.</translation> <translation id="385051799172605136">Retour</translation> +<translation id="3850989673553106152">Mot de passe modifié</translation> <translation id="3851428669031642514">Charger les scripts à risque</translation> <translation id="3852215160863921508">Assistance à la saisie</translation> <translation id="3853549894831560772">La <ph name="DEVICE_NAME" /> est activée</translation> @@ -4582,6 +4583,7 @@ <translation id="421182450098841253">&Afficher la barre de favoris</translation> <translation id="4211904048067111541">Ne plus utiliser avec les applis Android</translation> <translation id="42126664696688958">Exporter</translation> +<translation id="4213540068152645535">Problème lors de la modification de votre mot de passe</translation> <translation id="42137655013211669">L'accès à cette ressource est interdit sur ce serveur.</translation> <translation id="4213918571089943508">Compte Google de l'enfant</translation> <translation id="4214192212360095377">Désactiver maintenant</translation> @@ -4928,7 +4930,6 @@ <translation id="4462159676511157176">Serveurs de noms personnalisés</translation> <translation id="4465236939126352372">Limite de temps de <ph name="TIME" /> définie pour <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">Code incorrect</translation> -<translation id="4467561276409486506">&Activer/Désactiver le mode compact</translation> <translation id="4469324811108161144">Les notes peuvent contenir jusqu'à <ph name="CHARACTER_LIMIT" /> caractères.</translation> <translation id="4469762931504673593">Le site <ph name="ORIGIN" /> peut modifier les fichiers du dossier <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Préférences de l'espace de stockage externe</translation> @@ -8305,6 +8306,7 @@ <translation id="6913051485529944333">Vous ne verrez plus Google Agenda sur cette page</translation> <translation id="6914812290245989348">Aucun avertissement avant d'accéder à des sites non sécurisés</translation> <translation id="6916590542764765824">Gérer les extensions</translation> +<translation id="6916676294509106572">Agenda Outlook masqué</translation> <translation id="6917873303492266709">Pour rejoindre des groupes d'onglets, en partager et collaborer dessus, accédez aux paramètres et activez "Autoriser la connexion à Chrome"</translation> <translation id="6918677045355889289">Mise à jour de Chrome OS requise</translation> <translation id="6918733588290914545">Configuration rapide avec un téléphone Android</translation> @@ -10685,6 +10687,7 @@ <translation id="8625124982056504555">Lire les numéros de série des appareils Chrome OS et leurs composants</translation> <translation id="862542460444371744">&Extensions</translation> <translation id="8625663000550647058">Non autorisé à utiliser votre micro</translation> +<translation id="8625679025395572221">Il se peut que votre compte soit toujours menacé.</translation> <translation id="8625916342247441948">Ne pas autoriser les sites à se connecter à des périphériques HID</translation> <translation id="862727964348362408">Suspendu</translation> <translation id="862750493060684461">Cache CSS</translation>
diff --git a/chrome/app/resources/generated_resources_gl.xtb b/chrome/app/resources/generated_resources_gl.xtb index dac488f..8eb5e23 100644 --- a/chrome/app/resources/generated_resources_gl.xtb +++ b/chrome/app/resources/generated_resources_gl.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">O teu fillo ou filla pode usar un PIN para desbloquear o dispositivo.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">Non se puido descargar o dicionario de <ph name="LANGUAGE" /> do corrector ortográfico. Téntao de novo.</translation> +<translation id="1078029726086090536">Verificar o teu contrasinal</translation> <translation id="1078037449555275327">Configuración de ChromeVox</translation> <translation id="1079242569060319448">Esqueciches o PIN?</translation> <translation id="1079285777677001938">É posible que non se poidan usar as funcións dalgúns sitios.</translation> @@ -1423,7 +1424,6 @@ <translation id="1980168597243156">Estación espacial</translation> <translation id="1981434377190976112">Ler todos os teus datos en todos os sitios web</translation> <translation id="1982851102516626421">Non tes a sesión iniciada</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} e {field_2}}other{{field_1}, {field_2} e {field_3}}}</translation> <translation id="1984417487208496350">Sen protección (non recomendado)</translation> <translation id="198507684520034826">Axuda</translation> <translation id="1986836014090708999">Configuración de localización avanzada</translation> @@ -4083,6 +4083,7 @@ <translation id="3848547754896969219">Abrir nunha ventá do modo de &incógnito</translation> <translation id="3850172593216628215">Deixaron de recibirse as actualizacións de seguranza. Aforra 50 $ ou máis ao comprar un Chromebook novo.</translation> <translation id="385051799172605136">Atrás</translation> +<translation id="3850989673553106152">Cambiouse o contrasinal</translation> <translation id="3851428669031642514">Cargar scripts non seguros</translation> <translation id="3852215160863921508">Asistente de introdución de texto</translation> <translation id="3853549894831560772">Activouse o dispositivo <ph name="DEVICE_NAME" /></translation> @@ -4585,6 +4586,7 @@ <translation id="421182450098841253">&Mostrar a barra de marcadores</translation> <translation id="4211904048067111541">Deixar de usar con aplicacións para Android</translation> <translation id="42126664696688958">Exportar</translation> +<translation id="4213540068152645535">Produciuse un erro ao cambiar o teu contrasinal</translation> <translation id="42137655013211669">O servidor non permitiu acceder a este recurso.</translation> <translation id="4213918571089943508">Conta de Google do teu fillo ou filla</translation> <translation id="4214192212360095377">Desactivar agora</translation> @@ -4931,7 +4933,6 @@ <translation id="4462159676511157176">Servidores de nome personalizado</translation> <translation id="4465236939126352372">Aplicouse un límite de tempo de <ph name="TIME" /> a <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">O PIN é incorrecto</translation> -<translation id="4467561276409486506">&Activar ou desactivar o modo Compacto</translation> <translation id="4469324811108161144">As notas poden conter <ph name="CHARACTER_LIMIT" /> caracteres como máximo.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> pode editar os ficheiros de <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Preferencias para o almacenamento externo</translation> @@ -7434,6 +7435,7 @@ <translation id="6278776436938569440">Cambiar localización</translation> <translation id="6280215091796946657">Iniciar sesión cunha conta diferente</translation> <translation id="6280912520669706465">ARC</translation> +<translation id="6281218688313242284">Xestionar a túa &Conta de Google</translation> <translation id="6282180787514676874">{COUNT,plural, =1{Supera o límite de 1 folla}other{Supera o límite de {COUNT} follas}}</translation> <translation id="6282490239556659745">Quitar <ph name="EMBEDDED_SITE" /> de <ph name="SITE" /></translation> <translation id="6283438600881103103">Pecharase a túa sesión automaticamente agora. @@ -8045,6 +8047,7 @@ <translation id="6745592621698551453">Actualizar agora</translation> <translation id="6746124502594467657">Mover cara abaixo</translation> <translation id="67465227497040338">Mostrar o contrasinal para <ph name="DOMAIN" /></translation> +<translation id="6746834324024491643">Para poder acceder aos teus contrasinais e a outros datos en todos os teus dispositivos, inicia sesión como <ph name="EMAIL" /></translation> <translation id="6748980958975836188">Lin e acepto as <ph name="BEGIN_LINK1" />Condicións de servizo de Google<ph name="END_LINK1" /> e as <ph name="BEGIN_LINK2" />Condicións de servizo adicionais de Chrome e ChromeOS<ph name="END_LINK2" />.</translation> <translation id="6749077623962119521">Queres restablecer os permisos?</translation> <translation id="6749473226660745022">Fotos</translation> @@ -8302,6 +8305,7 @@ <translation id="6913051485529944333">Deixarás de ver Google Calendar nesta páxina</translation> <translation id="6914812290245989348">Non mostrar ningunha advertencia antes de acceder a un sitio pouco seguro</translation> <translation id="6916590542764765824">Xestionar extensións</translation> +<translation id="6916676294509106572">Calendario de Outlook oculto</translation> <translation id="6917873303492266709">Para compartir grupos de pestanas, unirte a eles e colaborar, abre a configuración e activa Permitir inicio de sesión en Chrome</translation> <translation id="6918677045355889289">É necesario actualizar Chrome OS</translation> <translation id="6918733588290914545">Configuración rápida cun teléfono Android</translation> @@ -10680,6 +10684,7 @@ <translation id="8625124982056504555">Ler números de serie dos compoñentes e dispositivos ChromeOS</translation> <translation id="862542460444371744">&Extensións</translation> <translation id="8625663000550647058">Permiso denegado para usar o micrófono</translation> +<translation id="8625679025395572221">A túa conta pode estar en perigo.</translation> <translation id="8625916342247441948">Non permitir que os sitios se conecten a dispositivos de interface humana</translation> <translation id="862727964348362408">Suspendido</translation> <translation id="862750493060684461">Caché de CSS</translation>
diff --git a/chrome/app/resources/generated_resources_gu.xtb b/chrome/app/resources/generated_resources_gu.xtb index 5794f0a..b844674 100644 --- a/chrome/app/resources/generated_resources_gu.xtb +++ b/chrome/app/resources/generated_resources_gu.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">ડિવાઇસ અનલૉક કરવા માટે, તમારું બાળક કોઈ પિનનો ઉપયોગ કરી શકે છે.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216"><ph name="LANGUAGE" /> માટે જોડણીની તપાસનો શબ્દકોશ ડાઉનલોડ ન કરી શક્યાં. ફરી પ્રયાસ કરો.</translation> +<translation id="1078029726086090536">તમારો પાસવર્ડ ચકાસો</translation> <translation id="1078037449555275327">ChromeVoxના સેટિંગ</translation> <translation id="1079242569060319448">શું પિન ભૂલી ગયા છો?</translation> <translation id="1079285777677001938">સુવિધાઓ કેટલીક સાઇટ પર કાર્ય ન કરે એવું બની શકે છે.</translation> @@ -1421,7 +1422,6 @@ <translation id="1980168597243156">સ્પેસ સ્ટેશન</translation> <translation id="1981434377190976112">બધી વેબસાઇટ પર તમારો બધો ડેટા વાંચો</translation> <translation id="1982851102516626421">તમે સાઇન આઉટ થઈ ગયા છો</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} અને {field_2}}one{{field_1}, {field_2} અને {field_3}}other{{field_1}, {field_2} અને {field_3}}}</translation> <translation id="1984417487208496350">કોઈ સંરક્ષણ નથી (સુઝાવ આપતા નથી)</translation> <translation id="198507684520034826">સહાય</translation> <translation id="1986836014090708999">વિગતવાર લોકેશન સેટિંગ</translation> @@ -4079,6 +4079,7 @@ <translation id="3848547754896969219">&છૂપી વિન્ડોમાં ખોલો</translation> <translation id="3850172593216628215">સુરક્ષા અપડેટ મળવાનું સમાપ્ત થયું છે. નવી Chromebook પર $50 અથવા વધુની બચત કરો.</translation> <translation id="385051799172605136">પાછળ</translation> +<translation id="3850989673553106152">પાસવર્ડ બદલ્યો</translation> <translation id="3851428669031642514">અસુરક્ષિત સ્ક્રિપ્ટ્સ લોડ કરો</translation> <translation id="3852215160863921508">ઇનપુટ સહાય</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" /> ચાલુ કરવામાં આવ્યો</translation> @@ -4581,6 +4582,7 @@ <translation id="421182450098841253">બુકમાર્ક બાર &બતાવો</translation> <translation id="4211904048067111541">Android ઍપ સાથે ઉપયોગ કરવાનું રોકો</translation> <translation id="42126664696688958">નિકાસ કરો</translation> +<translation id="4213540068152645535">તમારો પાસવર્ડ બદલવામાં સમસ્યા આવી રહી છે</translation> <translation id="42137655013211669">સર્વર દ્વારા આ સંસાધનની અૅક્સેસ નિષિદ્ધ હતી.</translation> <translation id="4213918571089943508">બાળકનું Google એકાઉન્ટ</translation> <translation id="4214192212360095377">હમણાં બંધ કરો</translation> @@ -4927,7 +4929,6 @@ <translation id="4462159676511157176">કસ્ટમ નામ સર્વર્સ</translation> <translation id="4465236939126352372"><ph name="APP_NAME" /> માટે <ph name="TIME" />ની સમય મર્યાદા સેટ કરી છે</translation> <translation id="4467373268340082204">ખોટો પિન</translation> -<translation id="4467561276409486506">કૉમ્પૅક્ટ મોડ પર ટૉગલ કરો</translation> <translation id="4469324811108161144">પાસવર્ડની નોંધમાં <ph name="CHARACTER_LIMIT" /> જેટલા અક્ષર સાચવી શકાય છે.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> <ph name="FOLDERNAME" />માં ફાઇલોમાં ફેરફાર કરી શકતા નથી</translation> <translation id="4470957202018033307">બાહ્ય સ્ટોરેજ માટેની પસંદગીઓ</translation> @@ -8307,6 +8308,7 @@ <translation id="6913051485529944333">તમને આ પેજ પર ફરી Google Calendar નહીં દેખાય</translation> <translation id="6914812290245989348">અસુરક્ષિત સાઇટ પર જતાં પહેલાં કોઈપણ ચેતવણીઓ જોશો નહીં</translation> <translation id="6916590542764765824">એક્સ્ટેન્શન મેનેજ કરો</translation> +<translation id="6916676294509106572">Outlook Calendar છુપાવ્યું</translation> <translation id="6917873303492266709">ટૅબના ગ્રૂપ શેર કરવા, તેમાં જોડાવા અથવા તેમાં સહયોગ કરવા માટે, સેટિંગ ખોલો અને "Chrome સાઇન ઇન"ને મંજૂરી આપો વિકલ્પ ચાલુ કરો</translation> <translation id="6918677045355889289">ChromeOSને અપડેટ કરવાની જરૂર છે</translation> <translation id="6918733588290914545">Android ફોન સાથે ઝડપી સેટઅપ</translation> @@ -10681,6 +10683,7 @@ <translation id="8625124982056504555">ChromeOS ડિવાઇસ અને કમ્પોનન્ટના અનુક્રમ નંબર વાંચો</translation> <translation id="862542460444371744">&એક્સ્ટેન્શન્સ</translation> <translation id="8625663000550647058">તમારા માઇક્રોફોનનો ઉપયોગ કરવાની મંજૂરી નથી</translation> +<translation id="8625679025395572221">તમારું એકાઉન્ટ હજી પણ જોખમમાં હોઈ શકે છે.</translation> <translation id="8625916342247441948">સાઇટને HID ડિવાઇસ સાથે કનેક્ટ કરવાની મંજૂરી આપશો નહીં</translation> <translation id="862727964348362408">સસ્પેન્ડેડ</translation> <translation id="862750493060684461">CSS કૅશ મેમરી</translation>
diff --git a/chrome/app/resources/generated_resources_hi.xtb b/chrome/app/resources/generated_resources_hi.xtb index b0f6181..f8935f6a 100644 --- a/chrome/app/resources/generated_resources_hi.xtb +++ b/chrome/app/resources/generated_resources_hi.xtb
@@ -1435,7 +1435,6 @@ <translation id="1980168597243156">स्पेस स्टेशन</translation> <translation id="1981434377190976112">यह एक्सटेंशन, सभी वेबसाइटों पर आपका पूरा डेटा पढ़ सकेगा</translation> <translation id="1982851102516626421">आपको साइन आउट कर दिया गया है</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} और {field_2}}one{{field_1}, {field_2}, और {field_3}}other{{field_1}, {field_2}, और {field_3}}}</translation> <translation id="1984417487208496350">कोई सुरक्षा नहीं (हम ऐसा करने का सुझाव नहीं देते)</translation> <translation id="198507684520034826">सहायता</translation> <translation id="1986836014090708999">जगह की जानकारी की ऐडवांस सेटिंग</translation> @@ -4942,7 +4941,6 @@ <translation id="4462159676511157176">कस्टम नाम सर्वर</translation> <translation id="4465236939126352372"><ph name="APP_NAME" /> के लिए <ph name="TIME" /> की समयसीमा तय की गई</translation> <translation id="4467373268340082204">गलत पिन</translation> -<translation id="4467561276409486506">&कॉम्पैक्ट मोड टॉगल करें</translation> <translation id="4469324811108161144">पासवर्ड के नोट में <ph name="CHARACTER_LIMIT" /> वर्ण तक सेव किए जा सकते हैं.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" />, <ph name="FOLDERNAME" /> में जाकर फ़ाइलों में बदलाव कर सकती है</translation> <translation id="4470957202018033307">बाहरी मेमोरी प्राथमिकताएं</translation> @@ -7446,6 +7444,7 @@ <translation id="6278776436938569440">जगह बदलें</translation> <translation id="6280215091796946657">किसी दूसरे खाते से साइन इन करें</translation> <translation id="6280912520669706465">ARC</translation> +<translation id="6281218688313242284">अपना &Google खाता मैनेज करें</translation> <translation id="6282180787514676874">{COUNT,plural, =1{काग़ज़ की 1 शीट से ज़्यादा प्रिंट नहीं कर सकते}one{काग़ज़ की {COUNT} शीट से ज़्यादा प्रिंट नहीं कर सकते}other{काग़ज़ की {COUNT} शीट से ज़्यादा प्रिंट नहीं कर सकते}}</translation> <translation id="6282490239556659745"><ph name="SITE" /> से <ph name="EMBEDDED_SITE" /> हटाएं</translation> <translation id="6283438600881103103">अब आप अपने-आप साइन आउट हो जाएंगे. @@ -8059,6 +8058,7 @@ <translation id="6745592621698551453">अभी अपडेट करें</translation> <translation id="6746124502594467657">नीचे ले जाएं</translation> <translation id="67465227497040338"><ph name="DOMAIN" /> का पासवर्ड दिखाएं</translation> +<translation id="6746834324024491643">अपने सभी डिवाइसों पर पासवर्ड और अन्य चीज़ों का ऐक्सेस पाने के लिए, <ph name="EMAIL" /> से साइन इन करें</translation> <translation id="6748980958975836188">मैंने <ph name="BEGIN_LINK1" />Google की सेवा की शर्तें<ph name="END_LINK1" />, <ph name="BEGIN_LINK2" />Chrome और ChromeOS की सेवा की अन्य शर्तें<ph name="END_LINK2" /> पढ़ ली हैं और उनसे सहमत हूं.</translation> <translation id="6749077623962119521">क्या आप अनुमतियां रीसेट करना चाहते हैं?</translation> <translation id="6749473226660745022">फ़ोटो</translation>
diff --git a/chrome/app/resources/generated_resources_hr.xtb b/chrome/app/resources/generated_resources_hr.xtb index d927f6a..8818b25 100644 --- a/chrome/app/resources/generated_resources_hr.xtb +++ b/chrome/app/resources/generated_resources_hr.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Vaše dijete može otključati uređaj PIN-om.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">Učitavanje rječnika za provjeru pravopisa za <ph name="LANGUAGE" /> nije uspjelo. Ponovite.</translation> +<translation id="1078029726086090536">Potvrdite zaporku</translation> <translation id="1078037449555275327">Postavke ChromeVoxa</translation> <translation id="1079242569060319448">Jeste li zaboravili PIN?</translation> <translation id="1079285777677001938">Značajke na nekim web-lokacijama možda neće funkcionirati.</translation> @@ -1426,7 +1427,6 @@ <translation id="1980168597243156">Svemirska postaja</translation> <translation id="1981434377190976112">Pročitajte sve svoje podatke na web-lokacijama</translation> <translation id="1982851102516626421">Odjavljeni ste</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} i {field_2}}one{{field_1}, {field_2} i {field_3}}few{{field_1}, {field_2} i {field_3}}other{{field_1}, {field_2} i {field_3}}}</translation> <translation id="1984417487208496350">Bez zaštite (ne preporučuje se)</translation> <translation id="198507684520034826">Pomoć</translation> <translation id="1986836014090708999">Napredne postavke lokacije</translation> @@ -4083,6 +4083,7 @@ <translation id="3848547754896969219">Otvori u &anonimnom prozoru</translation> <translation id="3850172593216628215">Sigurnosna ažuriranja su završila. Uštedite 50 USD ili više na novom Chromebooku.</translation> <translation id="385051799172605136">Natrag</translation> +<translation id="3850989673553106152">Zaporka je promijenjena</translation> <translation id="3851428669031642514">Učitaj nesigurne skripte</translation> <translation id="3852215160863921508">Pomoć prilikom unosa</translation> <translation id="3853549894831560772">Uređaj <ph name="DEVICE_NAME" /> je uključen</translation> @@ -4585,6 +4586,7 @@ <translation id="421182450098841253">&Prikaz trake oznake</translation> <translation id="4211904048067111541">Prestani koristiti s Android aplikacijama</translation> <translation id="42126664696688958">Izvezi</translation> +<translation id="4213540068152645535">Problemi s promjenom zaporke</translation> <translation id="42137655013211669">Pristup tom resursu zabranio je poslužitelj.</translation> <translation id="4213918571089943508">Google račun djeteta</translation> <translation id="4214192212360095377">Isključi odmah</translation> @@ -4931,7 +4933,6 @@ <translation id="4462159676511157176">Prilagođeni poslužitelji naziva</translation> <translation id="4465236939126352372"><ph name="TIME" /> vremensko ograničenje postavljeno za <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">Pogrešan PIN</translation> -<translation id="4467561276409486506">&Uključi kompaktni način rada</translation> <translation id="4469324811108161144">Broj znakova u bilješkama ne smije biti veći od <ph name="CHARACTER_LIMIT" />.</translation> <translation id="4469762931504673593">Web-lokacija <ph name="ORIGIN" /> može uređivati datoteke u mapi <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Postavke vanjske pohrane</translation> @@ -8306,6 +8307,7 @@ <translation id="6913051485529944333">Na ovoj stranici više vam se neće prikazivati Google kalendar</translation> <translation id="6914812290245989348">Ne prikazuj upozorenja prije otvaranja nesigurnih web-lokacija</translation> <translation id="6916590542764765824">Upravljanje proširenjima</translation> +<translation id="6916676294509106572">Outlook kalendar je skriven</translation> <translation id="6917873303492266709">Da biste dijelili, pridruživali se i surađivali u grupama kartica, otvorite postavke i uključite Dopusti prijavu u Chrome</translation> <translation id="6918677045355889289">Potrebno je ažurirati Chrome OS</translation> <translation id="6918733588290914545">Brzo postavljanje pomoću Android telefona</translation> @@ -10686,6 +10688,7 @@ <translation id="8625124982056504555">Čitaj serijske brojeve Chrome OS uređaja i komponenti</translation> <translation id="862542460444371744">&Proširenja</translation> <translation id="8625663000550647058">Nije dopuštena upotreba mikrofona</translation> +<translation id="8625679025395572221">Vaš je račun možda i dalje u opasnosti.</translation> <translation id="8625916342247441948">Ne dopuštaj web-lokacijama povezivanje s HID uređajima</translation> <translation id="862727964348362408">Obustavljeno</translation> <translation id="862750493060684461">CSS predmemorija</translation>
diff --git a/chrome/app/resources/generated_resources_hu.xtb b/chrome/app/resources/generated_resources_hu.xtb index 62409b6..35d0310d 100644 --- a/chrome/app/resources/generated_resources_hu.xtb +++ b/chrome/app/resources/generated_resources_hu.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Gyermeke mostantól használhat PIN-kódot az eszköz feloldására.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">Nem sikerült letölteni a helyesírás-ellenőrző szótárt ehhez a nyelvhez: <ph name="LANGUAGE" />. Próbálja újra.</translation> +<translation id="1078029726086090536">Jelszó ellenőrzése</translation> <translation id="1078037449555275327">A ChromeVox beállításai</translation> <translation id="1079242569060319448">Elfelejtette a PIN-kódot?</translation> <translation id="1079285777677001938">Előfordulhat, hogy bizonyos webhelyek funkciói nem működnek majd megfelelően.</translation> @@ -1433,7 +1434,6 @@ <translation id="1980168597243156">Űrállomás</translation> <translation id="1981434377190976112">Az Ön összes adatának olvasása az összes webhelyen</translation> <translation id="1982851102516626421">Nincs bejelentkezve</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} és {field_2}}other{{field_1}, {field_2} és {field_3}}}</translation> <translation id="1984417487208496350">Nincs védelem (nem javasolt)</translation> <translation id="198507684520034826">Súgó</translation> <translation id="1986836014090708999">Haladó helybeállítások</translation> @@ -4093,6 +4093,7 @@ <translation id="3848547754896969219">Megnyitás &inkognitó ablakban</translation> <translation id="3850172593216628215">A továbbiakban már nem érkeznek biztonsági frissítések. Legalább 50 USD-t takaríthat meg új Chromebook vásárlásakor.</translation> <translation id="385051799172605136">Vissza</translation> +<translation id="3850989673553106152">Jelszó módosítva</translation> <translation id="3851428669031642514">Nem biztonságos szkriptek betöltése</translation> <translation id="3852215160863921508">Beviteli segítség</translation> <translation id="3853549894831560772">A(z) <ph name="DEVICE_NAME" /> be van kapcsolva</translation> @@ -4594,6 +4595,7 @@ <translation id="421182450098841253">&Könyvjelzősáv megjelenítése</translation> <translation id="4211904048067111541">Használat leállítása az Android-alkalmazásoknál</translation> <translation id="42126664696688958">Exportálás</translation> +<translation id="4213540068152645535">Probléma adódott a jelszó módosítása közben</translation> <translation id="42137655013211669">A szerver letiltotta a hozzáférést ehhez az erőforráshoz.</translation> <translation id="4213918571089943508">A gyermek Google-fiókja</translation> <translation id="4214192212360095377">Kikapcsolás most</translation> @@ -4940,7 +4942,6 @@ <translation id="4462159676511157176">Egyéni névszerverek</translation> <translation id="4465236939126352372"><ph name="TIME" /> hosszúságú időkorlát beállítva a következőhöz: <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">Helytelen PIN-kód</translation> -<translation id="4467561276409486506">&Kompakt mód be- vagy kikapcsolása</translation> <translation id="4469324811108161144">A jegyzetek legfeljebb <ph name="CHARACTER_LIMIT" /> karakterből állhatnak.</translation> <translation id="4469762931504673593">A(z) <ph name="ORIGIN" /> szerkesztheti a(z) <ph name="FOLDERNAME" /> mappában lévő fájlokat</translation> <translation id="4470957202018033307">Külső tárhely beállításai</translation> @@ -8317,6 +8318,7 @@ <translation id="6913051485529944333">Ezen az oldalon többé nem jelenik meg a Google Naptár</translation> <translation id="6914812290245989348">Ne jelenjenek meg figyelmeztetések a nem biztonságos webhelyek megnyitása előtt</translation> <translation id="6916590542764765824">Bővítmények kezelése</translation> +<translation id="6916676294509106572">Outlook-naptár elrejtve</translation> <translation id="6917873303492266709">Ha meg szeretne osztani lapcsoportokat, csatlakozni szeretne hozzájuk, illetve együtt szeretne dolgozni másokkal bennük, nyissa meg a beállításokat, és kapcsolja be a Chrome-bejelentkezés engedélyezése beállítást</translation> <translation id="6918677045355889289">A ChromeOS frissítése szükséges</translation> <translation id="6918733588290914545">Gyors beállítás androidos telefonnal</translation> @@ -10696,6 +10698,7 @@ <translation id="8625124982056504555">A ChromeOS-eszköz és az összetevő sorozatszámának olvasása</translation> <translation id="862542460444371744">Bővítménye&k</translation> <translation id="8625663000550647058">Nem használhatják a mikrofont</translation> +<translation id="8625679025395572221">Fiókja még mindig veszélyben lehet.</translation> <translation id="8625916342247441948">A webhelyek nem csatlakozhatnak HID-eszközökhöz</translation> <translation id="862727964348362408">Felfüggesztett</translation> <translation id="862750493060684461">CSS gyorsítótár</translation>
diff --git a/chrome/app/resources/generated_resources_hy.xtb b/chrome/app/resources/generated_resources_hy.xtb index 99914c59..a2e2cf6 100644 --- a/chrome/app/resources/generated_resources_hy.xtb +++ b/chrome/app/resources/generated_resources_hy.xtb
@@ -1426,7 +1426,6 @@ <translation id="1980168597243156">Տիեզերակայան</translation> <translation id="1981434377190976112">Կարդալ ձեր տվյալները բոլոր կայքերում</translation> <translation id="1982851102516626421">Դուք դուրս եք եկել հաշվից</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} և {field_2}}one{{field_1}, {field_2} և {field_3}}other{{field_1}, {field_2} և {field_3}}}</translation> <translation id="1984417487208496350">Առանց պաշտպանության (խորհուրդ չի տրվում)</translation> <translation id="198507684520034826">Օգնություն</translation> <translation id="1986836014090708999">Տեղադրության լրացուցիչ կարգավորումներ</translation> @@ -4927,7 +4926,6 @@ <translation id="4462159676511157176">Անունների այլ սերվերներ</translation> <translation id="4465236939126352372">Նշված է <ph name="TIME" /> սահմանաչափ <ph name="APP_NAME" /> հավելվածի համար</translation> <translation id="4467373268340082204">PIN կոդը սխալ է</translation> -<translation id="4467561276409486506">&Միացնել/անջատել կոմպակտ ռեժիմը</translation> <translation id="4469324811108161144">Նշումները կարող են պարունակել առավելագույնը <ph name="CHARACTER_LIMIT" /> նիշ։</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> կայքը կարող է փոփոխել <ph name="FOLDERNAME" /> պանակի ֆայլերը</translation> <translation id="4470957202018033307">Արտաքին հիշողության կարգավորումներ</translation>
diff --git a/chrome/app/resources/generated_resources_id.xtb b/chrome/app/resources/generated_resources_id.xtb index 7bce45d..851aa88 100644 --- a/chrome/app/resources/generated_resources_id.xtb +++ b/chrome/app/resources/generated_resources_id.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Anak Anda dapat menggunakan PIN untuk membuka kunci perangkat.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">Tidak dapat mendownload kamus periksa ejaan untuk bahasa <ph name="LANGUAGE" />. Coba lagi.</translation> +<translation id="1078029726086090536">Verifikasi sandi Anda</translation> <translation id="1078037449555275327">Setelan ChromeVox</translation> <translation id="1079242569060319448">Lupa PIN?</translation> <translation id="1079285777677001938">Fitur di beberapa situs mungkin tidak berfungsi.</translation> @@ -1434,7 +1435,6 @@ <translation id="1980168597243156">Stasiun antariksa</translation> <translation id="1981434377190976112">Membaca semua data Anda di semua situs</translation> <translation id="1982851102516626421">Anda telah logout</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} dan {field_2}}other{{field_1}, {field_2}, dan {field_3}}}</translation> <translation id="1984417487208496350">Tidak ada perlindungan (tidak direkomendasikan)</translation> <translation id="198507684520034826">Bantuan</translation> <translation id="1986836014090708999">Setelan lokasi lanjutan</translation> @@ -4094,6 +4094,7 @@ <translation id="3848547754896969219">Buka di &jendela Samaran</translation> <translation id="3850172593216628215">Update keamanan telah berakhir. Hemat $50 atau lebih untuk Chromebook baru.</translation> <translation id="385051799172605136">Kembali</translation> +<translation id="3850989673553106152">Sandi diubah</translation> <translation id="3851428669031642514">Muat skrip yang tidak aman</translation> <translation id="3852215160863921508">Bantuan Input</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" /> diaktifkan</translation> @@ -4596,6 +4597,7 @@ <translation id="421182450098841253">&Tampilkan Bilah Bookmark</translation> <translation id="4211904048067111541">Hentikan penggunaan dengan aplikasi Android</translation> <translation id="42126664696688958">Ekspor</translation> +<translation id="4213540068152645535">Terjadi error saat mengubah sandi Anda</translation> <translation id="42137655013211669">Akses ke sumber daya ini tidak diizinkan oleh server.</translation> <translation id="4213918571089943508">Akun Google Anak</translation> <translation id="4214192212360095377">Nonaktifkan Sekarang</translation> @@ -4942,7 +4944,6 @@ <translation id="4462159676511157176">Server nama khusus</translation> <translation id="4465236939126352372">Batas waktu <ph name="TIME" /> ditetapkan untuk <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">PIN salah</translation> -<translation id="4467561276409486506">&Aktifkan/Nonaktifkan Mode Ringkas</translation> <translation id="4469324811108161144">Catatan dapat menyimpan hingga <ph name="CHARACTER_LIMIT" /> karakter.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> dapat mengedit file dalam <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Preferensi penyimpanan eksternal</translation> @@ -8318,6 +8319,7 @@ <translation id="6913051485529944333">Anda tidak akan melihat Google Kalender di halaman ini lagi</translation> <translation id="6914812290245989348">Jangan berikan peringatan apa pun sebelum membuka situs yang tidak aman</translation> <translation id="6916590542764765824">Kelola Ekstensi</translation> +<translation id="6916676294509106572">Outlook Calendar disembunyikan</translation> <translation id="6917873303492266709">Untuk berbagi, bergabung, dan berkolaborasi dalam grup tab, buka setelan dan aktifkan Izinkan login Chrome</translation> <translation id="6918677045355889289">Perlu update ChromeOS</translation> <translation id="6918733588290914545">Penyiapan cepat dengan ponsel Android</translation> @@ -10697,6 +10699,7 @@ <translation id="8625124982056504555">Membaca nomor seri perangkat dan komponen ChromeOS</translation> <translation id="862542460444371744">&Ekstensi</translation> <translation id="8625663000550647058">Tidak diizinkan menggunakan mikrofon Anda</translation> +<translation id="8625679025395572221">Akun Anda mungkin masih berisiko.</translation> <translation id="8625916342247441948">Jangan izinkan situs terhubung ke perangkat HID</translation> <translation id="862727964348362408">Ditangguhkan</translation> <translation id="862750493060684461">Cache CSS</translation>
diff --git a/chrome/app/resources/generated_resources_is.xtb b/chrome/app/resources/generated_resources_is.xtb index 040e6814..af92b50 100644 --- a/chrome/app/resources/generated_resources_is.xtb +++ b/chrome/app/resources/generated_resources_is.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Barnið getur notað PIN-númer til að taka tækið úr lás.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">Ekki var hægt að sækja orðabók villuleitar fyrir <ph name="LANGUAGE" />. Reyndu aftur.</translation> +<translation id="1078029726086090536">Staðfesta aðgangsorð</translation> <translation id="1078037449555275327">Stillingar ChromeVox</translation> <translation id="1079242569060319448">Gleymt PIN-númer?</translation> <translation id="1079285777677001938">Vera má að eiginleikar á sumum vefsvæðum virki ekki.</translation> @@ -1435,7 +1436,6 @@ <translation id="1980168597243156">Geimstöð</translation> <translation id="1981434377190976112">Lesa öll gögn þín á öllum vefsvæðum</translation> <translation id="1982851102516626421">Þú ert skráð(ur) út</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} og {field_2}}one{{field_1}, {field_2} og {field_3}}other{{field_1}, {field_2} og {field_3}}}</translation> <translation id="1984417487208496350">Engin vörn (ekki mælt með)</translation> <translation id="198507684520034826">Hjálp</translation> <translation id="1986836014090708999">Ítarlegar staðsetningarstillingar</translation> @@ -4095,6 +4095,7 @@ <translation id="3848547754896969219">Opna í &huliðsglugga</translation> <translation id="3850172593216628215">Öryggisuppfærslum er lokið. Sparaðu 50 USD eða meira þegar þú kaupir nýja Chromebook-tölvu.</translation> <translation id="385051799172605136">Til baka</translation> +<translation id="3850989673553106152">Aðgangsorði breytt</translation> <translation id="3851428669031642514">Hlaða ótraustar skriftur</translation> <translation id="3852215160863921508">Innsláttaraðstoð</translation> <translation id="3853549894831560772">Kveikt er á <ph name="DEVICE_NAME" /></translation> @@ -4597,6 +4598,7 @@ <translation id="421182450098841253">&Sýna bókamerkjastiku</translation> <translation id="4211904048067111541">Hætta að nota með Android forritum</translation> <translation id="42126664696688958">Flytja út</translation> +<translation id="4213540068152645535">Villa kom upp við að breyta aðgangsorðinu þínu</translation> <translation id="42137655013211669">Þjónninn bannaði aðgang að þessu tilfangi.</translation> <translation id="4213918571089943508">Google-reikningur barns</translation> <translation id="4214192212360095377">Slökkva núna</translation> @@ -4943,7 +4945,6 @@ <translation id="4462159676511157176">Þjónar með sérsniðnu heiti</translation> <translation id="4465236939126352372"><ph name="TIME" /> tímamörk stillt fyrir <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">Rangt PIN-númer</translation> -<translation id="4467561276409486506">&Kveikja/slökkva á þjappaðri stillingu</translation> <translation id="4469324811108161144">Glósur geta verið allt að <ph name="CHARACTER_LIMIT" /> stafir að lengd.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> getur breytt skrám í <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Kjörstillingar ytri geymslu</translation> @@ -8321,6 +8322,7 @@ <translation id="6913051485529944333">Þú munt ekki sjá Google-dagatal á þessari síðu aftur</translation> <translation id="6914812290245989348">Ekki sjá viðvaranir áður en farið er á ótrygg vefsvæði</translation> <translation id="6916590542764765824">Stjórna viðbótum</translation> +<translation id="6916676294509106572">Outlook-dagatal falið</translation> <translation id="6917873303492266709">Til að deila, tengjast og vinna með öðrum í flipahópum skaltu opna stillingar og kveikja á „Leyfa innskráningu í Chrome“</translation> <translation id="6918677045355889289">ChromeOS uppfærslu krafist</translation> <translation id="6918733588290914545">Fljótleg uppsetning með Android-síma</translation> @@ -10699,6 +10701,7 @@ <translation id="8625124982056504555">Lesa raðnúmer ChromeOS-tækja og íhluta</translation> <translation id="862542460444371744">Viðbætur</translation> <translation id="8625663000550647058">Mega ekki nota hljóðnemann</translation> +<translation id="8625679025395572221">Reikningurinn þinn er hugsanlega ennþá í hættu.</translation> <translation id="8625916342247441948">Ekki leyfa vefsvæðum að tengjast HID-tækjum</translation> <translation id="862727964348362408">Í bið</translation> <translation id="862750493060684461">CSS-skyndiminni</translation>
diff --git a/chrome/app/resources/generated_resources_it.xtb b/chrome/app/resources/generated_resources_it.xtb index 1033eb5..85f3f3d 100644 --- a/chrome/app/resources/generated_resources_it.xtb +++ b/chrome/app/resources/generated_resources_it.xtb
@@ -1425,7 +1425,6 @@ <translation id="1980168597243156">Stazione spaziale</translation> <translation id="1981434377190976112">Leggere tutti i tuoi dati su tutti i siti web</translation> <translation id="1982851102516626421">Accesso non eseguito</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} e {field_2}}other{{field_1}, {field_2} e {field_3}}}</translation> <translation id="1984417487208496350">Nessuna protezione (sconsigliata)</translation> <translation id="198507684520034826">Aiuto</translation> <translation id="1986836014090708999">Impostazioni di geolocalizzazione avanzate</translation> @@ -4932,7 +4931,6 @@ <translation id="4462159676511157176">Assegna nomi personalizzati a server</translation> <translation id="4465236939126352372">Limite di tempo di <ph name="TIME" /> impostato per <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">PIN errato</translation> -<translation id="4467561276409486506">&Attiva/Disattiva modalità compatta</translation> <translation id="4469324811108161144">Le note possono contenere massimo <ph name="CHARACTER_LIMIT" /> caratteri.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> può modificare i file nella cartella <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Preferenze dello spazio di archiviazione esterno</translation>
diff --git a/chrome/app/resources/generated_resources_iw.xtb b/chrome/app/resources/generated_resources_iw.xtb index d72e91f..a29a13d 100644 --- a/chrome/app/resources/generated_resources_iw.xtb +++ b/chrome/app/resources/generated_resources_iw.xtb
@@ -1434,7 +1434,6 @@ <translation id="1980168597243156">תחנת חלל</translation> <translation id="1981434377190976112">קריאת כל הנתונים שלך בכל האתרים</translation> <translation id="1982851102516626421">לא נכנסת לחשבון</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} וגם {field_2}}one{{field_1}, {field_2} וגם {field_3}}other{{field_1}, {field_2} וגם {field_3}}}</translation> <translation id="1984417487208496350">ללא הגנה (לא מומלץ)</translation> <translation id="198507684520034826">עזרה</translation> <translation id="1986836014090708999">הגדרות מיקום מתקדמות</translation> @@ -4945,7 +4944,6 @@ <translation id="4462159676511157176">שרתי שמות מותאמים אישית</translation> <translation id="4465236939126352372">מגבלת זמן של <ph name="TIME" /> הוגדרה לאפליקציה <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">קוד האימות שגוי</translation> -<translation id="4467561276409486506">&החלפה למצב קומפקטי</translation> <translation id="4469324811108161144">אפשר לשמור בהערות עד <ph name="CHARACTER_LIMIT" /> תווים.</translation> <translation id="4469762931504673593">ל-<ph name="ORIGIN" /> יש הרשאה לערוך קבצים בתיקייה <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">העדפות אחסון חיצוני</translation>
diff --git a/chrome/app/resources/generated_resources_ja.xtb b/chrome/app/resources/generated_resources_ja.xtb index f0461a0..fee46f8 100644 --- a/chrome/app/resources/generated_resources_ja.xtb +++ b/chrome/app/resources/generated_resources_ja.xtb
@@ -1422,7 +1422,6 @@ <translation id="1980168597243156">宇宙ステーション</translation> <translation id="1981434377190976112">すべてのウェブサイト上にある自分の全データの読み取り</translation> <translation id="1982851102516626421">ログアウトしています</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1}、{field_2}}other{{field_1}、{field_2}、{field_3}}}</translation> <translation id="1984417487208496350">保護なし(非推奨)</translation> <translation id="198507684520034826">ヘルプ</translation> <translation id="1986836014090708999">位置情報の詳細設定</translation> @@ -4921,7 +4920,6 @@ <translation id="4462159676511157176">カスタム ネーム サーバー</translation> <translation id="4465236939126352372"><ph name="APP_NAME" /> の使用時間制限が <ph name="TIME" /> に設定されました</translation> <translation id="4467373268340082204">PIN が正しくありません</translation> -<translation id="4467561276409486506">コンパクト モードに切り替え(&T)</translation> <translation id="4469324811108161144">メモは <ph name="CHARACTER_LIMIT" /> 文字以下で入力してください。</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> は「<ph name="FOLDERNAME" />」のファイルを編集できます</translation> <translation id="4470957202018033307">外部ストレージの設定</translation>
diff --git a/chrome/app/resources/generated_resources_ka.xtb b/chrome/app/resources/generated_resources_ka.xtb index 0116ea0..fd1ef03 100644 --- a/chrome/app/resources/generated_resources_ka.xtb +++ b/chrome/app/resources/generated_resources_ka.xtb
@@ -1425,7 +1425,6 @@ <translation id="1980168597243156">კოსმოსური სადგური</translation> <translation id="1981434377190976112">თქვენი ყველა მონაცემის წაკითხვა ყველა ვებსაიტზე</translation> <translation id="1982851102516626421">თქვენ გამოსული ხართ</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} და {field_2}}other{{field_1}, {field_2} და {field_3}}}</translation> <translation id="1984417487208496350">დაცვის გარეშე (არარეკომენდებული)</translation> <translation id="198507684520034826">დახმარება</translation> <translation id="1986836014090708999">მდებარეობის გაფართოებული პარამეტრები</translation> @@ -4932,7 +4931,6 @@ <translation id="4462159676511157176">ინდივიდუალური სახელთა სერვერები</translation> <translation id="4465236939126352372"><ph name="APP_NAME" />-ისთვის დაყენებული დროის ლიმიტია <ph name="TIME" /></translation> <translation id="4467373268340082204">PIN-კოდი არასწორია</translation> -<translation id="4467561276409486506">&კომპაქტური რეჟიმის გადართვა</translation> <translation id="4469324811108161144">შესაძლებელია მაქსიმუმ <ph name="CHARACTER_LIMIT" /> სიმბოლოს ჩანიშვნა.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" />-ს შეუძლია „<ph name="FOLDERNAME" />“-ში ფაილების რედაქტირება</translation> <translation id="4470957202018033307">გარე მეხსიერების პარამეტრები</translation>
diff --git a/chrome/app/resources/generated_resources_kk.xtb b/chrome/app/resources/generated_resources_kk.xtb index 6d04f84..8c77521 100644 --- a/chrome/app/resources/generated_resources_kk.xtb +++ b/chrome/app/resources/generated_resources_kk.xtb
@@ -714,7 +714,7 @@ <translation id="1494349716233667318">Сайттар құрылғыңызда орнатылған қаріптерді пайдалануға рұқсат сұрай алады</translation> <translation id="1494429729245089920">"<ph name="VM_NAME" />" виртуалдық компьютері бар, бірақ жарамды <ph name="APP_NAME" /> виртуалдық компьютері болып көрінбейді. Әкімшіге хабарласыңыз.</translation> <translation id="1495677929897281669">Қойындыға оралу</translation> -<translation id="1498498210836053409">Мәтінге өзгерістер енгізу кезінде пернелерді жабыстыру режимін өшіру (Смарт пернелерді жабыстыру режимі)</translation> +<translation id="1498498210836053409">Мәтінге өзгерістер енгізу кезінде пернелерді жабыстыру режимін өшіру (пернелерді жабыстыру смарт режимі)</translation> <translation id="1499041187027566160">дыбыс деңгейін арттыру</translation> <translation id="1500297251995790841">Белгісіз құрылғы [<ph name="VENDOR_ID" />:<ph name="PRODUCT_ID" />]</translation> <translation id="1500720779546450982">Сайтқа (<ph name="SITE_URL" />) сенемін</translation> @@ -1421,7 +1421,6 @@ <translation id="1980168597243156">Ғарыш станциясы</translation> <translation id="1981434377190976112">Барлық веб-сайттағы деректі оқу</translation> <translation id="1982851102516626421">Аккаунттан шығып кеткенсіз</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} және {field_2}}other{{field_1}, {field_2} және {field_3}}}</translation> <translation id="1984417487208496350">Қорғау режимін өшіру (ұсынылмайды)</translation> <translation id="198507684520034826">Анықтама</translation> <translation id="1986836014090708999">Қосымша локация параметрлері</translation> @@ -2176,7 +2175,7 @@ <translation id="2501173422421700905">Сертификат тоқтатылды</translation> <translation id="2501278716633472235">Артқа қайту</translation> <translation id="2501797496290880632">Пернелер тіркесімін теріңіз</translation> -<translation id="2501920221385095727">Жабысқақ пернелер</translation> +<translation id="2501920221385095727">Жабысқан пернелер</translation> <translation id="2502267564852819530"><ph name="TAB_TITLE" /> қойындысын (<ph name="LAST_ACTIVE" />) тізімнен өшіру</translation> <translation id="2502441965851148920">Автоматты жаңартулар қосылған. Әкімшіңіз қолмен жаңарту мүмкіндігін сөндірген.</translation> <translation id="2502719318159902502">Барлық рұқсаты бар</translation> @@ -3526,7 +3525,7 @@ <translation id="3488199663160411179">аты</translation> <translation id="3490695139702884919">Жүктеп алынуда… <ph name="PERCENT" />%</translation> <translation id="3491171603443463516">PIN кодыңызды немесе құпия сөзіңізді ұмытып қалсаңыз, жергілікті деректерді қалпына келтіруге болады.</translation> -<translation id="3491616972057195633">Пернелердің байқаусызда басылуын елемеу</translation> +<translation id="3491616972057195633">Пернелердің қайта басылуын елемеу</translation> <translation id="3491669675709357988">Балаңыздың аккаунты Family Link ата-ана бақылауы үшін реттелмеген. Реттеуді аяқтағаннан кейін, ата-ана бақылауын қоса аласыз. Ата-ана бақылауы туралы ақпаратты Explore қолданбасынан таба аласыз.</translation> <translation id="3491678231052507920">VR сеанстарына кіре алуыңыз үшін, сайттар әдетте виртуалдық шындық құрылғыларын және деректерді қолданады.</translation> <translation id="3493043608231401654">Қойындылар тобынан <ph name="TAB_TITLE" /> қойындысын өшіру</translation> @@ -4263,7 +4262,7 @@ <translation id="397703832102027365">Аяқталуда…</translation> <translation id="3977145907578671392">Инкогнито режимінде кейбір сайттардағы функциялар істемеуі мүмкін.</translation> <translation id="3977886311744775419">Автоматты жаңартулар мұндай желіде жүктеп алынбайды, бірақ жаңартулардың бар-жоғын қолмен тексеруге болады.</translation> -<translation id="3978325380690188371">ChromeVox қосулы кезде, бекітілген пернелер қолжетімді емес</translation> +<translation id="3978325380690188371">ChromeVox қосулы кезде, жабысқан пернелер қолжетімді емес.</translation> <translation id="3978732922947854545">Chrome браузері PDF файлдарын жақсартады</translation> <translation id="3979395879372752341">Жаңа кеңейтім қосылды (<ph name="EXTENSION_NAME" />)</translation> <translation id="3979748722126423326"><ph name="NETWORKDEVICE" /> қосу</translation> @@ -4924,7 +4923,6 @@ <translation id="4462159676511157176">Реттелетін атау серверлері</translation> <translation id="4465236939126352372"><ph name="APP_NAME" /> қолданбасы үшін шектелген уақыт: <ph name="TIME" /></translation> <translation id="4467373268340082204">PIN коды дұрыс емес.</translation> -<translation id="4467561276409486506">&Жинақы режимді қосу/өшіру</translation> <translation id="4469324811108161144">Ескертпелерде <ph name="CHARACTER_LIMIT" /> таңбаға дейін болуы мүмкін.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> <ph name="FOLDERNAME" /> қалтасындағы файлдарды өңдей алады.</translation> <translation id="4470957202018033307">Сыртқы жад параметрлері</translation>
diff --git a/chrome/app/resources/generated_resources_km.xtb b/chrome/app/resources/generated_resources_km.xtb index 48e828e5..2ae94c3 100644 --- a/chrome/app/resources/generated_resources_km.xtb +++ b/chrome/app/resources/generated_resources_km.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">កូនរបស់អ្នកអាចប្រើកូដ PIN ដើម្បីដោះសោឧបករណ៍។</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">មិនអាចទាញយកវចនានុក្រមពិនិត្យអក្ខរាវិរុទ្ធសម្រាប់ភាសា<ph name="LANGUAGE" /> បានទេ។ សូមព្យាយាមម្ដងទៀត។</translation> +<translation id="1078029726086090536">ផ្ទៀងផ្ទាត់ពាក្យសម្ងាត់របស់អ្នក</translation> <translation id="1078037449555275327">ការកំណត់ ChromeVox</translation> <translation id="1079242569060319448">ភ្លេចកូដ PIN ឬ?</translation> <translation id="1079285777677001938">មុខងារនៅលើគេហទំព័រមួយចំនួនអាចមិនដំណើរការទេ។</translation> @@ -1434,7 +1435,6 @@ <translation id="1980168597243156">ស្ថានីយអវកាស</translation> <translation id="1981434377190976112">អានទិន្នន័យទាំងអស់របស់អ្នកនៅលើគេហទំព័រទាំងអស់</translation> <translation id="1982851102516626421">អ្នកបានចេញពីគណនី</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} និង{field_2}}other{{field_1} {field_2} និង{field_3}}}</translation> <translation id="1984417487208496350">គ្មានការការពារ (មិនណែនាំ)</translation> <translation id="198507684520034826">ជំនួយ</translation> <translation id="1986836014090708999">ការកំណត់ទីតាំងកម្រិតខ្ពស់</translation> @@ -4092,6 +4092,7 @@ <translation id="3848547754896969219">បើកនៅក្នុង&ផ្ទាំងឯកជន</translation> <translation id="3850172593216628215">ការធ្វើបច្ចុប្បន្នភាពផ្នែកសុវត្ថិភាពបានដល់ទីបញ្ចប់ហើយ។ ចំណេញបាន $50 ឬច្រើនជាងនេះសម្រាប់ Chromebook ថ្មី។</translation> <translation id="385051799172605136">ថយក្រោយ</translation> +<translation id="3850989673553106152">បានប្ដូរពាក្យសម្ងាត់</translation> <translation id="3851428669031642514">ដំណើរការស្គ្រីបគ្មានសុុវត្ថិភាព</translation> <translation id="3852215160863921508">ជំនួយក្នុងការបញ្ចូល</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" /> ត្រូវបានបើក</translation> @@ -4594,6 +4595,7 @@ <translation id="421182450098841253">បង្ហាញរបាចំណាំ</translation> <translation id="4211904048067111541">ឈប់ប្រើជាមួយកម្មវិធី Android</translation> <translation id="42126664696688958">នាំចេញ</translation> +<translation id="4213540068152645535">មានបញ្ហាក្នុងការផ្លាស់ប្ដូរពាក្យសម្ងាត់របស់អ្នក</translation> <translation id="42137655013211669">ការចូលប្រើធនធាននេះត្រូវបានហាមឃាត់ដោយម៉ាស៊ីនមេ។</translation> <translation id="4213918571089943508">គណនី Google របស់កុមារ</translation> <translation id="4214192212360095377">បិទឥឡូវនេះ</translation> @@ -4940,7 +4942,6 @@ <translation id="4462159676511157176">ម៉ាស៊ីនមេឈ្មោះផ្ទាល់ខ្លូន</translation> <translation id="4465236939126352372">បានកំណត់រយៈពេលកំណត់ <ph name="TIME" /> សម្រាប់ <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">កូដ PIN មិនត្រឹមត្រូវទេ</translation> -<translation id="4467561276409486506">&បិទ/បើកមុខងារចង្អៀតខ្លាំង</translation> <translation id="4469324811108161144">កំណត់ចំណាំអាចមានរហូតដល់ <ph name="CHARACTER_LIMIT" /> តួអក្សរ។</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> អាចកែឯកសារនៅក្នុង <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">ចំណូលចិត្តទំហំផ្ទុកខាងក្រៅ</translation> @@ -8315,6 +8316,7 @@ <translation id="6913051485529944333">អ្នកនឹងមិនឃើញ Google ប្រតិទិននៅលើទំព័រនេះទៀតទេ</translation> <translation id="6914812290245989348">មិនមើលឃើញសារប្រុងប្រយ័ត្ន មុនពេលចូលទៅកាន់គេហទំព័រដែលគ្មានសុវត្ថិភាព</translation> <translation id="6916590542764765824">គ្រប់គ្រងកម្មវិធីបន្ថែម</translation> +<translation id="6916676294509106572">បានលាក់ប្រតិទិន Outlook</translation> <translation id="6917873303492266709">ដើម្បីចែករំលែក ចូលរួម និងសហការនៅក្នុងក្រុមផ្ទាំង សូមបើកការកំណត់ រួចបើក "អនុញ្ញាតការចូល Chrome"</translation> <translation id="6918677045355889289">តម្រូវឱ្យដំឡើងកំណែ ChromeOS</translation> <translation id="6918733588290914545">រៀបចំរហ័សដោយប្រើទូរសព្ទ Android</translation> @@ -10694,6 +10696,7 @@ <translation id="8625124982056504555">អានលេខស៊េរីរបស់សមាសធាតុ និងឧបករណ៍ ChromeOS</translation> <translation id="862542460444371744">កម្មវិធីបន្ថែម</translation> <translation id="8625663000550647058">មិនអនុញ្ញាតឱ្យប្រើមីក្រូហ្វូនរបស់អ្នកទេ</translation> +<translation id="8625679025395572221">គណនីរបស់អ្នកអាចនៅតែប្រឈមនឹងហានិភ័យ។</translation> <translation id="8625916342247441948">មិនអនុញ្ញាតឱ្យគេហទំព័រភ្ជាប់ជាមួយឧបករណ៍ HID ទេ</translation> <translation id="862727964348362408">ត្រូវបានបញ្ឈប់</translation> <translation id="862750493060684461">ឃ្លាំងសម្ងាត់ CSS</translation>
diff --git a/chrome/app/resources/generated_resources_kn.xtb b/chrome/app/resources/generated_resources_kn.xtb index ae4c10b8..bfc85cdd 100644 --- a/chrome/app/resources/generated_resources_kn.xtb +++ b/chrome/app/resources/generated_resources_kn.xtb
@@ -1427,7 +1427,6 @@ <translation id="1980168597243156">ಸ್ಪೇಸ್ ಸ್ಟೇಶನ್</translation> <translation id="1981434377190976112">ಎಲ್ಲಾ ವೆಬ್ಸೈಟ್ಗಳಲ್ಲಿ ನಿಮ್ಮ ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಓದಿ</translation> <translation id="1982851102516626421">ನೀವು ಸೈನ್ ಔಟ್ ಆಗಿದ್ದೀರಿ</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} ಮತ್ತು {field_2}}one{{field_1}, {field_2} ಮತ್ತು {field_3}}other{{field_1}, {field_2} ಮತ್ತು {field_3}}}</translation> <translation id="1984417487208496350">ಸುರಕ್ಷತೆ ಇಲ್ಲ (ಇದನ್ನು ನಾವು ಶಿಫಾರಸು ಮಾಡುವುದಿಲ್ಲ)</translation> <translation id="198507684520034826">ಸಹಾಯ</translation> <translation id="1986836014090708999">ಸುಧಾರಿತ ಸ್ಥಳ ಸೆಟ್ಟಿಂಗ್ಗಳು</translation> @@ -4934,7 +4933,6 @@ <translation id="4462159676511157176">ಕಸ್ಟಮ್ ಹೆಸರು ಸರ್ವರ್ಗಳು</translation> <translation id="4465236939126352372"><ph name="APP_NAME" /> ಆ್ಯಪ್ಗಾಗಿ <ph name="TIME" /> ಸಮಯದ ಮಿತಿಯನ್ನು ಹೊಂದಿಸಲಾಗಿದೆ</translation> <translation id="4467373268340082204">ಪಿನ್ ತಪ್ಪಾಗಿದೆ</translation> -<translation id="4467561276409486506">ಕಾಂಪ್ಯಾಕ್ಟ್ ಮೋಡ್ ಅನ್ನು ಟಾಗಲ್ ಮಾಡಿ</translation> <translation id="4469324811108161144">ಟಿಪ್ಪಣಿಗಳು ಗರಿಷ್ಠ <ph name="CHARACTER_LIMIT" /> ಅಕ್ಷರಗಳನ್ನು ಉಳಿಸಬಲ್ಲವು.</translation> <translation id="4469762931504673593"><ph name="FOLDERNAME" /> ನಲ್ಲಿ <ph name="ORIGIN" /> ಫೈಲ್ಗಳನ್ನು ಎಡಿಟ್ ಮಾಡಬಹುದು</translation> <translation id="4470957202018033307">ಬಾಹ್ಯ ಸಂಗ್ರಹಣೆ ಆದ್ಯತೆಗಳು</translation>
diff --git a/chrome/app/resources/generated_resources_ko.xtb b/chrome/app/resources/generated_resources_ko.xtb index 93b88e4..2b50773 100644 --- a/chrome/app/resources/generated_resources_ko.xtb +++ b/chrome/app/resources/generated_resources_ko.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">자녀가 PIN을 사용해 기기를 잠금 해제할 수 있습니다</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216"><ph name="LANGUAGE" /> 맞춤법 검사 사전을 다운로드할 수 없습니다. 다시 시도해 보세요.</translation> +<translation id="1078029726086090536">비밀번호 확인</translation> <translation id="1078037449555275327">ChromeVox 설정</translation> <translation id="1079242569060319448">PIN 찾기</translation> <translation id="1079285777677001938">일부 사이트에서는 기능이 작동하지 않을 수 있습니다.</translation> @@ -1435,7 +1436,6 @@ <translation id="1980168597243156">우주 정거장</translation> <translation id="1981434377190976112">모든 웹사이트의 전체 데이터 읽기</translation> <translation id="1982851102516626421">로그아웃 상태임</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} 및 {field_2}}other{{field_1}, {field_2}, {field_3}}}</translation> <translation id="1984417487208496350">보호되지 않음(권장되지 않음)</translation> <translation id="198507684520034826">도움말</translation> <translation id="1986836014090708999">고급 위치 설정</translation> @@ -4096,6 +4096,7 @@ <translation id="3848547754896969219">시크릿 창에서 열기(&I)</translation> <translation id="3850172593216628215">보안 업데이트가 종료되었습니다. 새 Chromebook을 50달러 이상 할인된 가격에 구매하세요.</translation> <translation id="385051799172605136">뒤로</translation> +<translation id="3850989673553106152">비밀번호 변경됨</translation> <translation id="3851428669031642514">안전하지 않은 스크립트 로드</translation> <translation id="3852215160863921508">입력 지원</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" /> 사용 설정됨</translation> @@ -4596,6 +4597,7 @@ <translation id="421182450098841253">북마크바 표시(&S)</translation> <translation id="4211904048067111541">Android 앱에서 사용 중지</translation> <translation id="42126664696688958">내보내기</translation> +<translation id="4213540068152645535">비밀번호를 변경하는 중에 문제 발생</translation> <translation id="42137655013211669">서버에서 이 리소스에 대한 액세스를 금지했습니다.</translation> <translation id="4213918571089943508">자녀의 Google 계정</translation> <translation id="4214192212360095377">지금 끄기</translation> @@ -4942,7 +4944,6 @@ <translation id="4462159676511157176">사용자 지정 네임서버</translation> <translation id="4465236939126352372"><ph name="APP_NAME" />에 <ph name="TIME" /> 시간 제한이 설정됨</translation> <translation id="4467373268340082204">잘못된 PIN</translation> -<translation id="4467561276409486506">컴팩트 모드로 전환(&T)</translation> <translation id="4469324811108161144">메모에는 <ph name="CHARACTER_LIMIT" />자(영문 기준)까지만 저장할 수 있습니다.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" />에서 <ph name="FOLDERNAME" />의 파일을 수정할 수 있습니다.</translation> <translation id="4470957202018033307">외부 저장소 환경설정</translation> @@ -8319,6 +8320,7 @@ <translation id="6913051485529944333">이 페이지에 Google Calendar가 더 이상 표시되지 않습니다</translation> <translation id="6914812290245989348">안전하지 않은 사이트로 이동하기 전에 경고를 표시하지 않습니다.</translation> <translation id="6916590542764765824">확장 프로그램 관리</translation> +<translation id="6916676294509106572">Outlook Calendar 숨김</translation> <translation id="6917873303492266709">탭 그룹을 공유하고, 탭 그룹에 참여하며, 탭 그룹에서 공동작업하려면 설정을 열고 Chrome 로그인 허용을 사용 설정하세요.</translation> <translation id="6918677045355889289">ChromeOS 업데이트 필요</translation> <translation id="6918733588290914545">Android 휴대전화를 사용한 빠른 설정</translation> @@ -10699,6 +10701,7 @@ <translation id="8625124982056504555">ChromeOS 기기와 구성요소 일련번호를 읽을 수 있습니다.</translation> <translation id="862542460444371744">확장 프로그램(&E)</translation> <translation id="8625663000550647058">마이크 사용이 허용되지 않음</translation> +<translation id="8625679025395572221">계정에 여전히 보안 위험이 있을 수 있습니다.</translation> <translation id="8625916342247441948">사이트에서 HID 기기에 연결하도록 허용하지 않음</translation> <translation id="862727964348362408">일시중지됨</translation> <translation id="862750493060684461">CSS 캐시</translation>
diff --git a/chrome/app/resources/generated_resources_ky.xtb b/chrome/app/resources/generated_resources_ky.xtb index ffa942c..c656f38 100644 --- a/chrome/app/resources/generated_resources_ky.xtb +++ b/chrome/app/resources/generated_resources_ky.xtb
@@ -1434,7 +1434,6 @@ <translation id="1980168597243156">Космостук станция</translation> <translation id="1981434377190976112">Бардык вебсайттардагы дайын-даректериңизди окуу</translation> <translation id="1982851102516626421">Аккаунттан чыгып кеттиңиз</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} жана {field_2}}other{{field_1}, {field_2} жана {field_3}}}</translation> <translation id="1984417487208496350">Корголбойт (сунушталбайт)</translation> <translation id="198507684520034826">Жардам</translation> <translation id="1986836014090708999">Өркүндөтүлгөн жайгашкан жерди аныктоо жөндөөлөрү</translation> @@ -4942,7 +4941,6 @@ <translation id="4462159676511157176">Жалпы ат серверлери</translation> <translation id="4465236939126352372"><ph name="APP_NAME" /> үчүн коюлган чектөө: <ph name="TIME" /></translation> <translation id="4467373268340082204">PIN код туура эмес</translation> -<translation id="4467561276409486506">Жыйнактуу режимди өчүрүү/күйгүзүү</translation> <translation id="4469324811108161144">Эскертүүлөр <ph name="CHARACTER_LIMIT" /> символго чейин сактай алат.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> сайты <ph name="FOLDERNAME" /> папкасындагы файлдары түзөтө алат</translation> <translation id="4470957202018033307">Тышкы сактагычтын параметрлери</translation> @@ -7448,6 +7446,7 @@ <translation id="6278776436938569440">Жайгашкан жерди өзгөртүү</translation> <translation id="6280215091796946657">Башка аккаунт менен кириңиз</translation> <translation id="6280912520669706465">ARC</translation> +<translation id="6281218688313242284">&Google аккаунтуңузду тескеңиз</translation> <translation id="6282180787514676874">{COUNT,plural, =1{1 кагаз чегинен ашып кетти}other{{COUNT} кагаз чегинен ашып кетти}}</translation> <translation id="6282490239556659745"><ph name="EMBEDDED_SITE" /> сайтын <ph name="SITE" /> сайтынан өчүрүү</translation> <translation id="6283438600881103103">Азыр автоматтык түрдө чыгасыз. @@ -8059,6 +8058,7 @@ <translation id="6745592621698551453">Азыр жаңыртуу</translation> <translation id="6746124502594467657">Төмөн жылдыруу</translation> <translation id="67465227497040338"><ph name="DOMAIN" /> сырсөзүн көрсөтүү</translation> +<translation id="6746834324024491643">Бардык түзмөктөрүңүздө сырсөздөрдү жана башка нерселерди алуу үчүн <ph name="EMAIL" /> аккаунту менен кириңиз</translation> <translation id="6748980958975836188"><ph name="BEGIN_LINK1" />Google'дун Тейлөө шарттарын<ph name="END_LINK1" />, <ph name="BEGIN_LINK2" />Chrome жана ChromeOS кошумча Тейлөө шарттарын<ph name="END_LINK2" /> окудум жана аларга макулмун.</translation> <translation id="6749077623962119521">Уруксаттарды баштапкы абалга келтиресизби?</translation> <translation id="6749473226660745022">Сүрөттөр</translation>
diff --git a/chrome/app/resources/generated_resources_lo.xtb b/chrome/app/resources/generated_resources_lo.xtb index b0387ed..48dca30 100644 --- a/chrome/app/resources/generated_resources_lo.xtb +++ b/chrome/app/resources/generated_resources_lo.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">ລູກຂອງທ່ານສາມາດໃຊ້ PIN ເພື່ອປົດລັອກອຸປະກອນໄດ້.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">ບໍ່ສາມາດດາວໂຫຼດວັດຈະນານຸກົມສຳລັບກວດຄຳຜິດສຳລັບ <ph name="LANGUAGE" /> ໄດ້. ກະລຸນາລອງໃໝ່ອີກ.</translation> +<translation id="1078029726086090536">ຢັ້ງຢືນລະຫັດຜ່ານຂອງທ່ານ</translation> <translation id="1078037449555275327">ການຕັ້ງຄ່າ ChromeVox</translation> <translation id="1079242569060319448">ລືມ PIN ບໍ?</translation> <translation id="1079285777677001938">ຄຸນສົມບັດຢູ່ບາງເວັບໄຊອາດບໍ່ເຮັດວຽກ.</translation> @@ -1431,7 +1432,6 @@ <translation id="1980168597243156">ສະຖານີອະວະກາດ</translation> <translation id="1981434377190976112">ອ່ານຂໍ້ມູນທັງໝົດຂອງທ່ານຢູ່ທຸກເວັບໄຊ</translation> <translation id="1982851102516626421">ທ່ານອອກຈາກລະບົບແລ້ວ</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} ແລະ {field_2}}other{{field_1}, {field_2} ແລະ {field_3}}}</translation> <translation id="1984417487208496350">ບໍ່ມີການປົກປ້ອງ (ບໍ່ແນະນຳ)</translation> <translation id="198507684520034826">ຊ່ວຍເຫຼືອ</translation> <translation id="1986836014090708999">ການຕັ້ງຄ່າສະຖານທີ່ຂັ້ນສູງ</translation> @@ -4093,6 +4093,7 @@ <translation id="3848547754896969219">ເປີດໃນ&ໜ້າຈໍທີ່ບໍ່ເປີດເຜີຍຕົວຕົນ</translation> <translation id="3850172593216628215">ການອັບເດດຄວາມປອດໄພໄດ້ສິ້ນສຸດລົງແລ້ວ. ປະຢັດຢ່າງໜ້ອຍ $50 ເມື່ອຊື້ Chromebook ເຄື່ອງໃໝ່.</translation> <translation id="385051799172605136">ກັບຄືນ</translation> +<translation id="3850989673553106152">ປ່ຽນລະຫັດຜ່ານແລ້ວ</translation> <translation id="3851428669031642514">ໂຫຼດໜັງສືຂຽນທີ່ບໍ່ປອດໄພ</translation> <translation id="3852215160863921508">ຜູ້ຊ່ວຍປ້ອນຂໍ້ມູນ</translation> <translation id="3853549894831560772">ເປີດ <ph name="DEVICE_NAME" /> ແລ້ວ</translation> @@ -4595,6 +4596,7 @@ <translation id="421182450098841253">ສະແດງແຖບບຸກມາກສ໌</translation> <translation id="4211904048067111541">ຢຸດການໃຊ້ກັບແອັບ Android</translation> <translation id="42126664696688958">ສົ່ງອອກ</translation> +<translation id="4213540068152645535">ບັນຫາໃນການປ່ຽນລະຫັດຜ່ານຂອງທ່ານ</translation> <translation id="42137655013211669">ເຊີບເວີຫ້າມການເຂົ້າເຖິງຊັບພະຍາກອນນີ້.</translation> <translation id="4213918571089943508">ບັນຊີ Google ຂອງລູກ</translation> <translation id="4214192212360095377">ປິດດຽວນີ້</translation> @@ -4941,7 +4943,6 @@ <translation id="4462159676511157176">ເຊີບເວີຊື່ກໍານົດເອງ</translation> <translation id="4465236939126352372">ຕັ້ງຄ່າຂີດຈຳກັດເວລາ <ph name="TIME" /> ສຳລັບ <ph name="APP_NAME" /> ແລ້ວ</translation> <translation id="4467373268340082204">PIN ບໍ່ຖືກຕ້ອງ</translation> -<translation id="4467561276409486506">ເປີດ/ປິດໂໝດກະທັດຮັດ</translation> <translation id="4469324811108161144">ບັນທຶກສາມາດຈັດເກັບໄດ້ສູງສຸດ <ph name="CHARACTER_LIMIT" /> ຕົວອັກສອນ.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> ສາມາດແກ້ໄຂໄຟລ໌ໃນ <ph name="FOLDERNAME" /> ໄດ້</translation> <translation id="4470957202018033307">ການຕັ້ງຄ່າບ່ອນຈັດເກັບຂໍ້ມູນພາຍນອກ</translation> @@ -8316,6 +8317,7 @@ <translation id="6913051485529944333">ທ່ານຈະບໍ່ເຫັນ Google ປະຕິທິນໃນໜ້ານີ້ອີກ</translation> <translation id="6914812290245989348">ບໍ່ເຫັນຄຳເຕືອນໃດໆກ່ອນການເຂົ້າໄປຫາເວັບໄຊທີ່ບໍ່ປອດໄພ</translation> <translation id="6916590542764765824">ຈັດການສ່ວນຂະຫຍາຍ</translation> +<translation id="6916676294509106572">ປະຕິທິນ Outlook ເຊື່ອງຢູ່</translation> <translation id="6917873303492266709">ເພື່ອແບ່ງປັນ, ເຂົ້າຮ່ວມ ແລະ ຮ່ວມມືໃນກຸ່ມແຖບ, ໃຫ້ເປີດການຕັ້ງຄ່າ ແລະ ເປີດ ອະນຸຍາດໃຫ້ເຂົ້າສູ່ລະບົບ Chrome</translation> <translation id="6918677045355889289">ຕ້ອງອັບເດດ ChromeOS</translation> <translation id="6918733588290914545">ການຕັ້ງຄ່າດ່ວນດ້ວຍໂທລະສັບ Android</translation> @@ -10692,6 +10694,7 @@ <translation id="8625124982056504555">ອ່ານອຸປະກອນ ChromeOS ແລະ ໝາຍເລກຊີຣຽວສ່ວນປະກອບ</translation> <translation id="862542460444371744">ສ່ວນຂະຫຍາຍ</translation> <translation id="8625663000550647058">ບໍ່ໄດ້ຮັບອະນຸຍາດໃຫ້ໃຊ້ໄມໂຄຣໂຟນຂອງທ່ານ</translation> +<translation id="8625679025395572221">ບັນຊີຂອງທ່ານອາດຍັງຄົງມີຄວາມສ່ຽງ.</translation> <translation id="8625916342247441948">ບໍ່ອະນຸຍາດໃຫ້ເວັບໄຊເຊື່ອມຕໍ່ຫາອຸປະກອນ HID</translation> <translation id="862727964348362408">ໂຈະແລ້ວ</translation> <translation id="862750493060684461">ແຄຊ໌ CSS</translation>
diff --git a/chrome/app/resources/generated_resources_lt.xtb b/chrome/app/resources/generated_resources_lt.xtb index 866d356..8d30193 100644 --- a/chrome/app/resources/generated_resources_lt.xtb +++ b/chrome/app/resources/generated_resources_lt.xtb
@@ -1438,7 +1438,6 @@ <translation id="1980168597243156">Kosminė stotis</translation> <translation id="1981434377190976112">Skaityti visus jūsų duomenis visose svetainėse</translation> <translation id="1982851102516626421">Esate atsijungę</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} ir {field_2}}one{{field_1}, {field_2} ir {field_3}}few{{field_1}, {field_2} ir {field_3}}many{{field_1}, {field_2} ir {field_3}}other{{field_1}, {field_2} ir {field_3}}}</translation> <translation id="1984417487208496350">Apsaugos nėra (nerekomenduojama)</translation> <translation id="198507684520034826">Pagalba</translation> <translation id="1986836014090708999">Išplėstiniai vietovės nustatymai</translation> @@ -4948,7 +4947,6 @@ <translation id="4462159676511157176">Tinkintų pavadinimų serveriai</translation> <translation id="4465236939126352372">Programai „<ph name="APP_NAME" />“ nustatytas <ph name="TIME" /> laiko apribojimas</translation> <translation id="4467373268340082204">Netinkamas PIN kodas</translation> -<translation id="4467561276409486506">&Perjungti į kompaktišką režimą</translation> <translation id="4469324811108161144">Didžiausias simbolių skaičius, kurį galite išsaugoti pastabose: <ph name="CHARACTER_LIMIT" />.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> gali redaguoti aplanko „<ph name="FOLDERNAME" />“ failus</translation> <translation id="4470957202018033307">Išorinės saugyklos nuostatos</translation>
diff --git a/chrome/app/resources/generated_resources_lv.xtb b/chrome/app/resources/generated_resources_lv.xtb index 8d9f329f..3a430c46 100644 --- a/chrome/app/resources/generated_resources_lv.xtb +++ b/chrome/app/resources/generated_resources_lv.xtb
@@ -1427,7 +1427,6 @@ <translation id="1980168597243156">Kosmosa stacija</translation> <translation id="1981434377190976112">Lasīt visus jūsu datus visās vietnēs</translation> <translation id="1982851102516626421">Jūs esat izrakstījies</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} un {field_2}}zero{{field_1}, {field_2} un {field_3}}one{{field_1}, {field_2} un {field_3}}other{{field_1}, {field_2} un {field_3}}}</translation> <translation id="1984417487208496350">Bez aizsardzības (nav ieteicams)</translation> <translation id="198507684520034826">Palīdzība</translation> <translation id="1986836014090708999">Atrašanās vietas papildu iestatījumi</translation> @@ -4932,7 +4931,6 @@ <translation id="4462159676511157176">Pielāgoti nosaukumu serveri</translation> <translation id="4465236939126352372">Lietotnei <ph name="APP_NAME" /> ir iestatīts laika ierobežojums: <ph name="TIME" />.</translation> <translation id="4467373268340082204">Nepareizs PIN kods</translation> -<translation id="4467561276409486506">&Pārslēgt kompakto režīmu</translation> <translation id="4469324811108161144">Piezīmju garums nedrīkst pārsniegt <ph name="CHARACTER_LIMIT" /> rakstzīmes.</translation> <translation id="4469762931504673593">Vietne <ph name="ORIGIN" /> var rediģēt direktorijā <ph name="FOLDERNAME" /> glabātos failus</translation> <translation id="4470957202018033307">Ārējās atmiņas preferences</translation>
diff --git a/chrome/app/resources/generated_resources_mk.xtb b/chrome/app/resources/generated_resources_mk.xtb index 2ad301e..1ecfc69 100644 --- a/chrome/app/resources/generated_resources_mk.xtb +++ b/chrome/app/resources/generated_resources_mk.xtb
@@ -1435,7 +1435,6 @@ <translation id="1980168597243156">Вселенска станица</translation> <translation id="1981434377190976112">да ги чита сите ваши податоци на сите веб-сајтови</translation> <translation id="1982851102516626421">Одјавени сте</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} и {field_2}}one{{field_1}, {field_2} и {field_3}}other{{field_1}, {field_2} и {field_3}}}</translation> <translation id="1984417487208496350">Без заштита (не се препорачува)</translation> <translation id="198507684520034826">Помош</translation> <translation id="1986836014090708999">Напредни поставки за локација</translation> @@ -4943,7 +4942,6 @@ <translation id="4462159676511157176">Сервери со приспособено име</translation> <translation id="4465236939126352372">Поставено е временско ограничување од <ph name="TIME" /> за <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">Погрешен PIN</translation> -<translation id="4467561276409486506">&Вклучување/исклучување „Режим на компактност“</translation> <translation id="4469324811108161144">Белешките може да заштедат до <ph name="CHARACTER_LIMIT" /> знаци.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> може да изменува датотеки во <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Поставки за надворешно складирање</translation> @@ -7449,6 +7447,7 @@ <translation id="6278776436938569440">Променете ја локацијата</translation> <translation id="6280215091796946657">Најави се со друга сметка</translation> <translation id="6280912520669706465">ARC</translation> +<translation id="6281218688313242284">Управувајте со вашата &сметка на Google</translation> <translation id="6282180787514676874">{COUNT,plural, =1{Ја надминува границата од 1 лист хартија}one{Ја надминува границата од {COUNT} лист хартија}other{Ја надминува границата од {COUNT} листови хартија}}</translation> <translation id="6282490239556659745">Отстрани го сајтот <ph name="EMBEDDED_SITE" /> од <ph name="SITE" /></translation> <translation id="6283438600881103103">Сега ќе ве одјавиме автоматски. @@ -8062,6 +8061,7 @@ <translation id="6745592621698551453">Ажурирај сега</translation> <translation id="6746124502594467657">Премести долу</translation> <translation id="67465227497040338">Прикажи ја лозинката за <ph name="DOMAIN" /></translation> +<translation id="6746834324024491643">За да ги добиете вашите лозинки и друго на сите ваши уреди, најавете се како <ph name="EMAIL" /></translation> <translation id="6748980958975836188">Ги прочитав и се согласувам со <ph name="BEGIN_LINK1" />Условите за користење на Google<ph name="END_LINK1" />, <ph name="BEGIN_LINK2" />Дополнителните услови за користење на Chrome и ChromeOS<ph name="END_LINK2" />.</translation> <translation id="6749077623962119521">Да се ресетираат дозволите?</translation> <translation id="6749473226660745022">Фотографии</translation>
diff --git a/chrome/app/resources/generated_resources_ml.xtb b/chrome/app/resources/generated_resources_ml.xtb index 6624ae0..84a9f757 100644 --- a/chrome/app/resources/generated_resources_ml.xtb +++ b/chrome/app/resources/generated_resources_ml.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">നിങ്ങളുടെ കുട്ടിക്ക് ഒരു പിൻ ഉപയോഗിച്ച് ഈ ഉപകരണം അൺലോക്ക് ചെയ്യാനാകും.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216"><ph name="LANGUAGE" /> ഭാഷയ്ക്ക് സ്പെൽ ചെക്ക് നിഘണ്ടു ഡൗൺലോഡ് ചെയ്യാനായില്ല. വീണ്ടും ശ്രമിക്കുക.</translation> +<translation id="1078029726086090536">നിങ്ങളുടെ പാസ്വേഡ് പരിശോധിച്ചുറപ്പിക്കുക</translation> <translation id="1078037449555275327">ChromeVox ക്രമീകരണം</translation> <translation id="1079242569060319448">പിൻ മറന്നോ?</translation> <translation id="1079285777677001938">ചില സൈറ്റുകളിലെ ഫീച്ചറുകൾ പ്രവർത്തിച്ചേക്കില്ല.</translation> @@ -1421,7 +1422,6 @@ <translation id="1980168597243156">ബഹിരാകാശ നിലയം</translation> <translation id="1981434377190976112">എല്ലാ വെബ്സൈറ്റുകളിലെയും നിങ്ങളുടെ എല്ലാ ഡാറ്റയും വായിക്കുക</translation> <translation id="1982851102516626421">നിങ്ങൾ സൈൻ ഔട്ട് ചെയ്തു</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1}, {field_2} എന്നിവ}other{{field_1}, {field_2}, {field_3} എന്നിവ}}</translation> <translation id="1984417487208496350">പരിരക്ഷയില്ല (ശുപാർശ ചെയ്യുന്നില്ല)</translation> <translation id="198507684520034826">സഹായം</translation> <translation id="1986836014090708999">വിപുലമായ ലൊക്കേഷൻ ക്രമീകരണം</translation> @@ -4078,6 +4078,7 @@ <translation id="3848547754896969219">&അദൃശ്യ വിൻഡോയിൽ തുറക്കുക</translation> <translation id="3850172593216628215">സുരക്ഷാ അപ്ഡേറ്റുകൾ അവസാനിച്ചു. പുതിയ Chromebook-ൽ $50 അല്ലെങ്കിൽ അതിൽ കൂടുതൽ ലാഭിക്കൂ.</translation> <translation id="385051799172605136">പിന്നോട്ട്</translation> +<translation id="3850989673553106152">പാസ്വേഡ് മാറ്റി</translation> <translation id="3851428669031642514">സുരക്ഷിതമല്ലാത്ത സ്ക്രിപ്റ്റുകൾ ലോഡ് ചെയ്യുക</translation> <translation id="3852215160863921508">ഇൻപുട്ട് സഹായം</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" /> ഓണാക്കി</translation> @@ -4579,6 +4580,7 @@ <translation id="421182450098841253">ബുക്ക്മാർക്കുകൾ ബാർ &കാണിക്കുക</translation> <translation id="4211904048067111541">Android ആപ്പുകളിൽ ഉപയോഗിക്കുന്നത് നിർത്തുക</translation> <translation id="42126664696688958">എക്സ്പോർട്ടുചെയ്യുക</translation> +<translation id="4213540068152645535">നിങ്ങളുടെ പാസ്വേഡ് മാറ്റുന്നതിൽ പ്രശ്നമുണ്ട്</translation> <translation id="42137655013211669">ഈ ഉറവിടത്തിലേക്കുള്ള ആക്സസ് സെർവർ തടഞ്ഞു.</translation> <translation id="4213918571089943508">കുട്ടിയുടെ Google Account</translation> <translation id="4214192212360095377">ഇപ്പോൾ ഓഫാക്കുക</translation> @@ -4925,7 +4927,6 @@ <translation id="4462159676511157176">ഇഷ്ടാനുസൃത നാമ സെർവറുകൾ</translation> <translation id="4465236939126352372"><ph name="APP_NAME" />-നായി <ph name="TIME" /> സമയ പരിധി സജ്ജീകരിച്ചു</translation> <translation id="4467373268340082204">പിൻ തെറ്റാണ്</translation> -<translation id="4467561276409486506">കോംപാക്റ്റ് മോഡ് ടോഗിൾ ചെയ്യുക</translation> <translation id="4469324811108161144">കുറിപ്പുകളിൽ <ph name="CHARACTER_LIMIT" /> പ്രതീകങ്ങൾ വരെ ഉണ്ടാകാം.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> എന്നതിന് <ph name="FOLDERNAME" /> എന്ന ഫോൾഡറിലെ ഫയലുകൾ എഡിറ്റ് ചെയ്യാനാവും</translation> <translation id="4470957202018033307">ബാഹ്യ സ്റ്റോറേജ് മുൻഗണനകൾ</translation> @@ -8301,6 +8302,7 @@ <translation id="6913051485529944333">ഈ പേജിൽ നിങ്ങൾ Google Calendar വീണ്ടും കാണില്ല</translation> <translation id="6914812290245989348">സുരക്ഷിതമല്ലാത്ത സൈറ്റുകളിലേക്ക് പോകുന്നതിന് മുമ്പ് മുന്നറിയിപ്പുകളൊന്നും കാണരുത്</translation> <translation id="6916590542764765824">വിപുലീകരണങ്ങൾ നിയന്ത്രിക്കുക</translation> +<translation id="6916676294509106572">Outlook കലണ്ടർ മറച്ചിരിക്കുന്നു</translation> <translation id="6917873303492266709">ടാബ് ഗ്രൂപ്പുകൾ പങ്കിടാനോ അവയിൽ ചേരാനോ സഹകരിക്കാനോ, ക്രമീകരണം തുറന്ന് Chrome സൈൻ ഇൻ അനുവദിക്കുക ഓണാക്കുക</translation> <translation id="6918677045355889289">ChromeOS അപ്ഡേറ്റ് ചെയ്യേണ്ടതുണ്ട്</translation> <translation id="6918733588290914545">Android ഫോൺ ഉപയോഗിച്ചുള്ള ദ്രുത്ര സജ്ജീകരണം</translation> @@ -10680,6 +10682,7 @@ <translation id="8625124982056504555">ChromeOS ഉപകരണവും കമ്പോണന്റ് സീരിയൽ നമ്പറുകളും റീഡ് ചെയ്യുക</translation> <translation id="862542460444371744">&വിപുലീകരണങ്ങള്</translation> <translation id="8625663000550647058">നിങ്ങളുടെ മൈക്രോഫോൺ ഉപയോഗിക്കാൻ അനുവാദമില്ല</translation> +<translation id="8625679025395572221">നിങ്ങളുടെ അക്കൗണ്ട് ഇപ്പോഴും അപകടത്തിലായിരിക്കാം.</translation> <translation id="8625916342247441948">HID ഉപകരണങ്ങളിലേക്ക് കണക്റ്റ് ചെയ്യാൻ സൈറ്റുകളെ അനുവദിക്കരുത്</translation> <translation id="862727964348362408">താൽക്കാലികമായി നിർത്തി</translation> <translation id="862750493060684461">CSS കാഷേ</translation>
diff --git a/chrome/app/resources/generated_resources_mn.xtb b/chrome/app/resources/generated_resources_mn.xtb index 2dda7463..2d2508e 100644 --- a/chrome/app/resources/generated_resources_mn.xtb +++ b/chrome/app/resources/generated_resources_mn.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Таны хүүхэд төхөөрөмжийн түгжээг тайлахын тулд ПИН ашиглах боломжтой.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216"><ph name="LANGUAGE" />-н зөв бичгийн алдаа шалгах толь бичгийг татаж чадсангүй. Дахин оролдоно уу.</translation> +<translation id="1078029726086090536">Нууц үгээ баталгаажуулах</translation> <translation id="1078037449555275327">ChromeVox-н тохиргоо</translation> <translation id="1079242569060319448">ПИН-ээ мартсан уу?</translation> <translation id="1079285777677001938">Зарим сайтын онцлогууд ажиллахгүй байж магадгүй.</translation> @@ -1430,7 +1431,6 @@ <translation id="1980168597243156">Сансрын станц</translation> <translation id="1981434377190976112">Таны бүх вебсайт дээрх бүх өгөгдлийг унших</translation> <translation id="1982851102516626421">Та гарсан байна</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} болон {field_2}}other{{field_1}, {field_2}, {field_3}}}</translation> <translation id="1984417487208496350">Хамгаалалт байхгүй (зөвлөдөггүй)</translation> <translation id="198507684520034826">Тусламж</translation> <translation id="1986836014090708999">Байршлын нарийвчилсан тохиргоо</translation> @@ -4090,6 +4090,7 @@ <translation id="3848547754896969219">&Нууцлалтай цонхонд нээх</translation> <translation id="3850172593216628215">Аюулгүй байдлын шинэчлэлтүүд дууслаа. Шинэ Chromebook-д $50 эсвэл үүнээс ихийг хэмнээрэй.</translation> <translation id="385051799172605136">Буцах</translation> +<translation id="3850989673553106152">Нууц үгийг өөрчилсөн</translation> <translation id="3851428669031642514">Аюултай скриптүүдийг ачаалла</translation> <translation id="3852215160863921508">Оролтын дэмжлэг</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" />-г асаасан</translation> @@ -4591,6 +4592,7 @@ <translation id="421182450098841253">&Хадгалагдсан хуудсуудын цонхыг харуулах</translation> <translation id="4211904048067111541">Android аппуудтай ашиглахаа зогсоох</translation> <translation id="42126664696688958">Экспортлох</translation> +<translation id="4213540068152645535">Нууц үгээ өөрчлөхөд асуудал гарсан уу?</translation> <translation id="42137655013211669">Энэ нөөцөд хандалт хийхийг серверээс хориглосон байна.</translation> <translation id="4213918571089943508">Хүүхдийн Google Бүртгэл</translation> <translation id="4214192212360095377">Одоо унтраах</translation> @@ -4937,7 +4939,6 @@ <translation id="4462159676511157176">Стандарт нэртэй серверүүд</translation> <translation id="4465236939126352372"><ph name="APP_NAME" />-д <ph name="TIME" />-н цагийн хязгаар тохируулсан</translation> <translation id="4467373268340082204">ПИН буруу байна</translation> -<translation id="4467561276409486506">&Товч тодорхой горимыг асаах/унтраах</translation> <translation id="4469324811108161144">Тэмдэглэл нь <ph name="CHARACTER_LIMIT" /> хүртэлх тэмдэгт хадгалах боломжтой.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> нь <ph name="FOLDERNAME" />-н файлыг засах боломжтой</translation> <translation id="4470957202018033307">Гадаад санах ойн сонголт</translation> @@ -8313,6 +8314,7 @@ <translation id="6913051485529944333">Та энэ хуудсан дээр Google Календарийг дахин харахгүй</translation> <translation id="6914812290245989348">Аюултай сайтууд руу очихоос өмнө ямар нэг сануулга харахгүй</translation> <translation id="6916590542764765824">Удирдлаганд байдаг өргөтгөлүүд</translation> +<translation id="6916676294509106572">Outlook Календарийг нуусан</translation> <translation id="6917873303492266709">Табын бүлэг хуваалцах, нэгдэх, хамтран ажиллахын тулд тохиргоог нээж, Chrome-д нэвтрэхийг зөвшөөрөхийг асаана уу</translation> <translation id="6918677045355889289">ChromeOS-н шинэчлэлт шаардлагатай</translation> <translation id="6918733588290914545">Android утсаар шуурхай тохируулах</translation> @@ -10689,6 +10691,7 @@ <translation id="8625124982056504555">ChromeOS төхөөрөмж болон бүрэлдэхүүн хэсгийн серийн дугаарыг унших</translation> <translation id="862542460444371744">& Өргөтгөлүүд</translation> <translation id="8625663000550647058">Таны микрофоныг ашиглахыг зөвшөөрөөгүй</translation> +<translation id="8625679025395572221">Таны бүртгэл эрсдэлд байсаар байж болзошгүй.</translation> <translation id="8625916342247441948">Сайтуудад HID төхөөрөмжүүдэд холбогдохыг бүү зөвшөөр</translation> <translation id="862727964348362408">Түр саатуулсан</translation> <translation id="862750493060684461">CSS-ийн кэш</translation>
diff --git a/chrome/app/resources/generated_resources_mr.xtb b/chrome/app/resources/generated_resources_mr.xtb index 6c9b8e80..5326d63 100644 --- a/chrome/app/resources/generated_resources_mr.xtb +++ b/chrome/app/resources/generated_resources_mr.xtb
@@ -1434,7 +1434,6 @@ <translation id="1980168597243156">अंतराळ केंद्र</translation> <translation id="1981434377190976112">सर्व वेबसाइटवरील तुमचा सर्व डेटा वाचू शकते</translation> <translation id="1982851102516626421">तुम्ही साइन आउट केले आहे</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} आणि {field_2}}other{{field_1}, {field_2} आणि {field_3}}}</translation> <translation id="1984417487208496350">संरक्षण नाही (शिफारस केली जात नाही)</translation> <translation id="198507684520034826">मदत</translation> <translation id="1986836014090708999">प्रगत स्थान सेटिंग्ज</translation> @@ -4942,7 +4941,6 @@ <translation id="4462159676511157176">कस्टम नाव सर्व्हर</translation> <translation id="4465236939126352372"><ph name="APP_NAME" /> साठी सेट केलेली <ph name="TIME" /> ची वेळ मर्यादा</translation> <translation id="4467373268340082204">चुकीचा पिन</translation> -<translation id="4467561276409486506">संक्षिप्त मोड टॉगल करा</translation> <translation id="4469324811108161144"><ph name="CHARACTER_LIMIT" /> वर्णांपर्यंतच्या टिपा सेव्ह केल्या जाऊ शकतात.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> <ph name="FOLDERNAME" /> मधील फाइल संपादित करू शकते</translation> <translation id="4470957202018033307">बाह्य स्टोरेज प्राधान्ये</translation>
diff --git a/chrome/app/resources/generated_resources_ms.xtb b/chrome/app/resources/generated_resources_ms.xtb index 9daffa5..e9f90da 100644 --- a/chrome/app/resources/generated_resources_ms.xtb +++ b/chrome/app/resources/generated_resources_ms.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Anak anda boleh menggunakan PIN untuk membuka kunci peranti.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">Tidak dapat memuat turun kamus semak ejaan untuk <ph name="LANGUAGE" />. Cuba lagi.</translation> +<translation id="1078029726086090536">Sahkan kata laluan anda</translation> <translation id="1078037449555275327">Tetapan ChromeVox</translation> <translation id="1079242569060319448">Terlupa PIN?</translation> <translation id="1079285777677001938">Ciri pada sesetengah laman mungkin tidak berfungsi.</translation> @@ -1434,7 +1435,6 @@ <translation id="1980168597243156">Stesen angkasa</translation> <translation id="1981434377190976112">Baca semua data anda pada semua laman web</translation> <translation id="1982851102516626421">Anda dilog keluar</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} dan {field_2}}other{{field_1}, {field_2} dan {field_3}}}</translation> <translation id="1984417487208496350">Tiada perlindungan (tidak disyorkan)</translation> <translation id="198507684520034826">Bantuan</translation> <translation id="1986836014090708999">Tetapan lokasi lanjutan</translation> @@ -4094,6 +4094,7 @@ <translation id="3848547754896969219">Buka dalam tetingkap &Inkognito</translation> <translation id="3850172593216628215">Kemaskinian keselamatan telah ditamatkan. Jimat $50 atau lebih untuk Chromebook baharu.</translation> <translation id="385051799172605136">Kembali</translation> +<translation id="3850989673553106152">Kata laluan ditukar</translation> <translation id="3851428669031642514">Muatkan skrip yang tidak selamat</translation> <translation id="3852215160863921508">Bantuan Input</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" /> dihidupkan</translation> @@ -4596,6 +4597,7 @@ <translation id="421182450098841253">&Tunjukkan Bar Penanda Halaman</translation> <translation id="4211904048067111541">Berhenti menggunakan dengan apl Android</translation> <translation id="42126664696688958">Eksport</translation> +<translation id="4213540068152645535">Masalah semasa menukar kata laluan anda</translation> <translation id="42137655013211669">Akses kepada sumber ini dilarang oleh pelayan.</translation> <translation id="4213918571089943508">Google Account Anak</translation> <translation id="4214192212360095377">Matikan Sekarang</translation> @@ -4942,7 +4944,6 @@ <translation id="4462159676511157176">Nama pelayan tersuai</translation> <translation id="4465236939126352372">Had masa <ph name="TIME" /> ditetapkan untuk <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">PIN salah</translation> -<translation id="4467561276409486506">&Togol Mod Sarat</translation> <translation id="4469324811108161144">Nota boleh menyimpan hingga <ph name="CHARACTER_LIMIT" /> aksara.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> boleh mengedit fail dalam <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Pilihan storan luar</translation> @@ -8318,6 +8319,7 @@ <translation id="6913051485529944333">Anda tidak akan melihat Google Calendar pada halaman ini lagi</translation> <translation id="6914812290245989348">Tidak memberikan sebarang amaran sebelum mengakses laman yang tidak selamat</translation> <translation id="6916590542764765824">Urus Sambungan</translation> +<translation id="6916676294509106572">Kalendar Outlook disembunyikan</translation> <translation id="6917873303492266709">Untuk berkongsi, menyertai dan bekerjasama dalam kumpulan tab, buka tetapan dan hidupkan Benarkan log masuk Chrome</translation> <translation id="6918677045355889289">Kemaskinian Chrome OS diperlukan</translation> <translation id="6918733588290914545">Persediaan pantas dengan telefon Android</translation> @@ -10699,6 +10701,7 @@ <translation id="8625124982056504555">Baca nombor siri peranti dan komponen ChromeOS</translation> <translation id="862542460444371744">&Sambungan</translation> <translation id="8625663000550647058">Tidak dibenarkan untuk menggunakan mikrofon anda</translation> +<translation id="8625679025395572221">Akaun anda mungkin masih berisiko.</translation> <translation id="8625916342247441948">Jangan benarkan laman menyambung kepada peranti HID</translation> <translation id="862727964348362408">Digantung</translation> <translation id="862750493060684461">Cache CSS</translation>
diff --git a/chrome/app/resources/generated_resources_my.xtb b/chrome/app/resources/generated_resources_my.xtb index 7256cf4..374a26b 100644 --- a/chrome/app/resources/generated_resources_my.xtb +++ b/chrome/app/resources/generated_resources_my.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">သင့်ကလေးသည် ဤစက်ကိုဖွင့်ရန် ပင်နံပါတ် သုံးနိုင်သည်။</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216"><ph name="LANGUAGE" /> အတွက် စာလုံးပေါင်းစစ်ဆေးသော အဘိဓာန်ကို ဒေါင်းလုဒ်လုပ်၍မရပါ။ ထပ်စမ်းကြည့်ပါ။</translation> +<translation id="1078029726086090536">စကားဝှက်ကို အတည်ပြုရန်</translation> <translation id="1078037449555275327">ChromeVox ဆက်တင်များ</translation> <translation id="1079242569060319448">ပင်နံပါတ် မေ့နေသလား။</translation> <translation id="1079285777677001938">ဝဘ်ဆိုက်အချို့ရှိ အင်္ဂါရပ်များ အလုပ်မလုပ်နိုင်ပါ။</translation> @@ -1432,7 +1433,6 @@ <translation id="1980168597243156">အာကာသစခန်း</translation> <translation id="1981434377190976112">ဝဘ်ဆိုက်အားလုံးပေါ်ရှိ သင့်ဒေတာအားလုံးကို ဖတ်ရှုခြင်း</translation> <translation id="1982851102516626421">ထွက်ထားသည်</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} နှင့် {field_2}}other{{field_1}၊ {field_2} နှင့် {field_3}}}</translation> <translation id="1984417487208496350">ကာကွယ်မှုမရှိပါ (အကြံပြုမထားပါ)</translation> <translation id="198507684520034826">အကူအညီ</translation> <translation id="1986836014090708999">တည်နေရာပြ အဆင့်မြင့်ဆက်တင်များ</translation> @@ -4093,6 +4093,7 @@ <translation id="3848547754896969219">&ရုပ်ဖျက် ဝင်းဒိုးတွင် ဖွင့်ရန်</translation> <translation id="3850172593216628215">လုံခြုံရေးအပ်ဒိတ်များ သက်တမ်းကုန်သွားပြီ။ Chromebook အသစ်တွင် $50 နှင့်အထက် ချွေတာပါ။</translation> <translation id="385051799172605136">နောက်သို့</translation> +<translation id="3850989673553106152">စကားဝှက်ကို ပြောင်းလိုက်ပါပြီ</translation> <translation id="3851428669031642514">စိတ်မချရသည့် စကရစ်များ ရယူရန်</translation> <translation id="3852215160863921508">လက်ကွက် အထောက်အကူ</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" /> ဖွင့်ထားသည်</translation> @@ -4594,6 +4595,7 @@ <translation id="421182450098841253">&စာညှပ် ဘားကို ပြရန်</translation> <translation id="4211904048067111541">Android အက်ပ်များနှင့် သုံးခြင်းကို ရပ်ရန်</translation> <translation id="42126664696688958">တင်ပို့ရန်</translation> +<translation id="4213540068152645535">စကားဝှက် ပြောင်းရာတွင် ပြဿနာရှိနေသည်</translation> <translation id="42137655013211669">ဤရင်းမြစ်သို့ ဝင်ရောက်သုံးခြင်းအား ဆာဗာမှ တားမြစ်ထား၏</translation> <translation id="4213918571089943508">ကလေး၏ Google Account</translation> <translation id="4214192212360095377">ယခုပိတ်ရန်</translation> @@ -4940,7 +4942,6 @@ <translation id="4462159676511157176">စိတ်ကြိုက်အမည် ဆာဗာများ</translation> <translation id="4465236939126352372"><ph name="APP_NAME" /> အတွက် အချိန် <ph name="TIME" /> ကန့်သတ်ထားသည်</translation> <translation id="4467373268340082204">ပင်နံပါတ် မှားနေသည်</translation> -<translation id="4467561276409486506">ကျစ်ကျစ်လျစ်လျစ်မုဒ် ဖွင့်ရန်</translation> <translation id="4469324811108161144">မှတ်ချက်များကို စာလုံးရေ <ph name="CHARACTER_LIMIT" /> လုံးအထိ သိမ်းနိုင်သည်။</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> က <ph name="FOLDERNAME" /> ထဲရှိ ဖိုင်များကို တည်းဖြတ်နိုင်သည်</translation> <translation id="4470957202018033307">ပြင်ပ သိုလှောင်ခန်း သတ်မှတ်ချက်များ</translation> @@ -8314,6 +8315,7 @@ <translation id="6913051485529944333">ဤစာမျက်နှာတွင် Google Calendar ကို ထပ်တွေ့ရမည် မဟုတ်ပါ</translation> <translation id="6914812290245989348">လုံခြုံမှုမရှိသော ဝဘ်ဆိုက်များသို့မသွားမီ သတိပေးချက် မမြင်ရရန်</translation> <translation id="6916590542764765824">Manage Extensions</translation> +<translation id="6916676294509106572">Outlook Calendar ဖျောက်ထားသည်</translation> <translation id="6917873303492266709">တဘ်အုပ်စုများကို မျှဝေရန်၊ ၎င်းတို့တွင် ပါဝင်ရန်နှင့် ပူးတွဲလုပ်ကိုင်ရန် ဆက်တင်များကိုဖွင့်ပြီး ‘Chrome သို့ လက်မှတ်ထိုးဝင်ခွင့်ပြုရန်’ ကိုဖွင့်ပါ</translation> <translation id="6918677045355889289">ChromeOS အပ်ဒိတ် လိုအပ်သည်</translation> <translation id="6918733588290914545">Android ဖုန်းဖြင့် စနစ်အမြန်ထည့်သွင်းရန်</translation> @@ -10692,6 +10694,7 @@ <translation id="8625124982056504555">ChromeOS စက်ပစ္စည်းနှင့် အစိတ်အပိုင်း နံပါတ်စဉ်များကို ဖတ်နိုင်သည်</translation> <translation id="862542460444371744">&တိုးချဲ့မှုများ</translation> <translation id="8625663000550647058">သင့်မိုက်ကရိုဖုန်းကို သုံးရန် ခွင့်ပြုမထားပါ</translation> +<translation id="8625679025395572221">သင့်အကောင့်သည် အန္တရာယ်ရှိနေနိုင်ပါသည်။</translation> <translation id="8625916342247441948">HID ကိရိယာများနှင့် ချိတ်ဆက်ရန် ဝဘ်ဆိုက်များကို ခွင့်မပြုပါနှင့်</translation> <translation id="862727964348362408">ဆိုင်းငံ့ထား</translation> <translation id="862750493060684461">CSS ကက်ရှ</translation>
diff --git a/chrome/app/resources/generated_resources_ne.xtb b/chrome/app/resources/generated_resources_ne.xtb index a8b8129..1c1a8a8d 100644 --- a/chrome/app/resources/generated_resources_ne.xtb +++ b/chrome/app/resources/generated_resources_ne.xtb
@@ -1421,7 +1421,6 @@ <translation id="1980168597243156">स्पेस स्टेसन</translation> <translation id="1981434377190976112">सबै वेबसाइटमा भएका तपाईंका सबै डेटा पढ्न</translation> <translation id="1982851102516626421">तपाईं साइन आउट अवस्थामा हुनुहुन्छ</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} र {field_2}}other{{field_1}, {field_2} र {field_3}}}</translation> <translation id="1984417487208496350">सुरक्षारहित मोड (सिफारिस गरिँदैन)</translation> <translation id="198507684520034826">मद्दत</translation> <translation id="1986836014090708999">उन्नत लोकेसन सेटिङ</translation> @@ -4924,7 +4923,6 @@ <translation id="4462159676511157176">अनुकुल नाम सर्भरहरू</translation> <translation id="4465236939126352372"><ph name="APP_NAME" /> का हकमा <ph name="TIME" /> समय सीमा सेट गरिएको छ</translation> <translation id="4467373268340082204">गलत PIN</translation> -<translation id="4467561276409486506">कम्प्याक्ट मोड टगल गर्नुहोस्</translation> <translation id="4469324811108161144">टिपोटहरूमा बढीमा <ph name="CHARACTER_LIMIT" /> वटा वर्ण समावेश गर्न सकिन्छ।</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> ले <ph name="FOLDERNAME" /> मा फाइल सम्पादन गर्न सक्ने छ</translation> <translation id="4470957202018033307">बाह्य भण्डारणसम्बन्धी प्राथमिकताहरू</translation>
diff --git a/chrome/app/resources/generated_resources_nl.xtb b/chrome/app/resources/generated_resources_nl.xtb index ebf0b4d..9d2ced6 100644 --- a/chrome/app/resources/generated_resources_nl.xtb +++ b/chrome/app/resources/generated_resources_nl.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Je kind kan een pincode gebruiken om het apparaat te ontgrendelen.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">Kan het woordenboek voor de spellingcontrole van <ph name="LANGUAGE" /> niet downloaden. Probeer het opnieuw.</translation> +<translation id="1078029726086090536">Je wachtwoord laten verifiëren</translation> <translation id="1078037449555275327">ChromeVox-instellingen</translation> <translation id="1079242569060319448">Pincode vergeten?</translation> <translation id="1079285777677001938">Functies op bepaalde sites werken misschien niet.</translation> @@ -1424,7 +1425,6 @@ <translation id="1980168597243156">Ruimtestation</translation> <translation id="1981434377190976112">Al je gegevens op alle websites lezen</translation> <translation id="1982851102516626421">Je bent uitgelogd</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} en {field_2}}other{{field_1}, {field_2} en {field_3}}}</translation> <translation id="1984417487208496350">Geen beveiliging (niet aanbevolen)</translation> <translation id="198507684520034826">Help</translation> <translation id="1986836014090708999">Geavanceerde locatie-instellingen</translation> @@ -4079,6 +4079,7 @@ <translation id="3848547754896969219">Openen in &incognitovenster</translation> <translation id="3850172593216628215">Beveiligingsupdates zijn beëindigd. Bespaar $ 50 of meer op een nieuwe Chromebook.</translation> <translation id="385051799172605136">Terug</translation> +<translation id="3850989673553106152">Wachtwoord gewijzigd</translation> <translation id="3851428669031642514">Onveilige scripts laden</translation> <translation id="3852215160863921508">Invoerondersteuning</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" /> is aangezet</translation> @@ -4580,6 +4581,7 @@ <translation id="421182450098841253">&Bookmarkbalk bekijken</translation> <translation id="4211904048067111541">Niet meer gebruiken met Android-apps</translation> <translation id="42126664696688958">Exporteren</translation> +<translation id="4213540068152645535">Problemen met het wijzigen van je wachtwoord</translation> <translation id="42137655013211669">De toegang tot deze bron is verboden door de server.</translation> <translation id="4213918571089943508">Google-account van kind</translation> <translation id="4214192212360095377">Nu uitzetten</translation> @@ -4926,7 +4928,6 @@ <translation id="4462159676511157176">Aangepaste naamservers</translation> <translation id="4465236939126352372">Tijdslimiet van <ph name="TIME" /> ingesteld voor <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">Onjuiste pincode</translation> -<translation id="4467561276409486506">&Compacte modus aan-/uitzetten</translation> <translation id="4469324811108161144">Notities mogen maximaal <ph name="CHARACTER_LIMIT" /> tekens bevatten.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> kan bestanden bewerken in <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Voorkeuren voor externe opslag</translation> @@ -8297,6 +8298,7 @@ <translation id="6913051485529944333">Je ziet Google Agenda niet meer op deze pagina</translation> <translation id="6914812290245989348">Geen waarschuwingen tonen voordat je naar niet-beveiligde sites gaat</translation> <translation id="6916590542764765824">Extensies beheren</translation> +<translation id="6916676294509106572">Outlook-agenda verborgen</translation> <translation id="6917873303492266709">Als je tabbladgroepen wilt delen, eraan deelnemen en eraan wilt samenwerken in tabbladgroepen, open je de instellingen en zet je Inloggen bij Chrome toestaan aan</translation> <translation id="6918677045355889289">Chrome OS-update vereist</translation> <translation id="6918733588290914545">Snel instellen met Android-telefoon</translation> @@ -10675,6 +10677,7 @@ <translation id="8625124982056504555">Serienummers van ChromeOS-apparaat en component lezen</translation> <translation id="862542460444371744">&Extensies</translation> <translation id="8625663000550647058">Geen toestemming om je microfoon te gebruiken</translation> +<translation id="8625679025395572221">Je account loopt mogelijk nog steeds gevaar.</translation> <translation id="8625916342247441948">Niet toestaan dat sites verbinding maken met HID-apparaten</translation> <translation id="862727964348362408">Opgeschort</translation> <translation id="862750493060684461">CSS-cachegeheugen</translation>
diff --git a/chrome/app/resources/generated_resources_no.xtb b/chrome/app/resources/generated_resources_no.xtb index f4e12f6..aa68b0c 100644 --- a/chrome/app/resources/generated_resources_no.xtb +++ b/chrome/app/resources/generated_resources_no.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Barnet ditt kan bruke en PIN-kode for å låse opp enheten.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">Kunne ikke laste ned ordliste for stavekontroll for <ph name="LANGUAGE" />. Prøv på nytt.</translation> +<translation id="1078029726086090536">Bekreft passordet ditt</translation> <translation id="1078037449555275327">ChromeVox-innstillinger</translation> <translation id="1079242569060319448">Har du glemt PIN-koden?</translation> <translation id="1079285777677001938">Det kan hende at funksjoner på noen nettsteder ikke fungerer.</translation> @@ -1428,7 +1429,6 @@ <translation id="1980168597243156">Romstasjon</translation> <translation id="1981434377190976112">lese alle dataene dine på alle nettsteder</translation> <translation id="1982851102516626421">Du er logget av</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} og {field_2}}other{{field_1}, {field_2} og {field_3}}}</translation> <translation id="1984417487208496350">Ingen beskyttelse (anbefales ikke)</translation> <translation id="198507684520034826">Hjelp</translation> <translation id="1986836014090708999">Avanserte posisjonsinnstillinger</translation> @@ -4088,6 +4088,7 @@ <translation id="3848547754896969219">Åpne i &inkognitovindu</translation> <translation id="3850172593216628215">Du har sluttet å få sikkerhetsoppdateringer. Spar 50 USD eller mer på en ny Chromebook.</translation> <translation id="385051799172605136">Tilbake</translation> +<translation id="3850989673553106152">Passordet er endret</translation> <translation id="3851428669031642514">Last inn utrygge skripter</translation> <translation id="3852215160863921508">Inndatastøtte</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" /> er slått på</translation> @@ -4588,6 +4589,7 @@ <translation id="421182450098841253">&Vis bokmerkerad</translation> <translation id="4211904048067111541">Slutt å bruke med Android-apper</translation> <translation id="42126664696688958">Eksportér</translation> +<translation id="4213540068152645535">Problemer med å endre passordet</translation> <translation id="42137655013211669">Tilgangen til denne ressursen ble avvist av tjeneren.</translation> <translation id="4213918571089943508">Google-kontoen til et barn</translation> <translation id="4214192212360095377">Slå av nå</translation> @@ -4934,7 +4936,6 @@ <translation id="4462159676511157176">Egendefinerte navnetjenere</translation> <translation id="4465236939126352372">En tidsgrense på <ph name="TIME" /> er angitt for <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">Feil PIN-kode</translation> -<translation id="4467561276409486506">&Slå av/på kompakt modus</translation> <translation id="4469324811108161144">Notater kan lagre opptil <ph name="CHARACTER_LIMIT" /> tegn.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> kan redigere filer i <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Innstillinger for ekstern lagring</translation> @@ -8307,6 +8308,7 @@ <translation id="6913051485529944333">Du kommer ikke til å se Google Kalender på denne siden igjen</translation> <translation id="6914812290245989348">Ikke bli advart før du går til usikre nettsteder</translation> <translation id="6916590542764765824">Administrer utvidelser</translation> +<translation id="6916676294509106572">Outlook-kalenderen er skjult</translation> <translation id="6917873303492266709">For å dele, bli med i og samarbeide i fanegrupper, åpne innstillingene og slå på Tillat Chrome-pålogging</translation> <translation id="6918677045355889289">En ChromeOS-oppdatering kreves</translation> <translation id="6918733588290914545">Rask konfigurering med Android-telefon</translation> @@ -10687,6 +10689,7 @@ <translation id="8625124982056504555">lese serienumrene til ChromeOS-enheten og -komponenter</translation> <translation id="862542460444371744">&Utvidelser</translation> <translation id="8625663000550647058">Nettsteder som ikke har lov til å bruke mikrofonen din</translation> +<translation id="8625679025395572221">Det kan være at kontoen din fremdeles er i faresonen.</translation> <translation id="8625916342247441948">Ikke la nettsteder koble til HID-enheter</translation> <translation id="862727964348362408">Stanset</translation> <translation id="862750493060684461">CSS-buffer</translation>
diff --git a/chrome/app/resources/generated_resources_or.xtb b/chrome/app/resources/generated_resources_or.xtb index ca3689e..5d2133598 100644 --- a/chrome/app/resources/generated_resources_or.xtb +++ b/chrome/app/resources/generated_resources_or.xtb
@@ -798,7 +798,7 @@ <translation id="1556127816860282890">ପୃଷ୍ଠପଟର କାର୍ଯ୍ୟକଳାପ ଏବଂ ସ୍ମୁଥ ସ୍କ୍ରୋଲିଂ ପରି କିଛି ଭିଜୁଆଲ ଇଫେକ୍ଟ ସୀମିତ ହୋଇପାରେ</translation> <translation id="1556537182262721003">ପ୍ରୋଫାଇଲ୍କୁ ଏକ୍ସଟେନ୍ସନ୍ ଡିରେକ୍ଟୋରୀ ପଠାଯାଇପାରିଲାନାହିଁ।</translation> <translation id="1557939148300698553">ପ୍ରୋଫାଇଲ ତିଆରି କରନ୍ତୁ</translation> -<translation id="155803912725350982">ଶ୍ଲୋ କୀଗୁଡ଼ିକ</translation> +<translation id="155803912725350982">ସ୍ଲୋ କୀ</translation> <translation id="155865706765934889">ଟଚ୍ପ୍ୟାଡ୍</translation> <translation id="1558671750917454373"><ph name="DEVICE_NAME" />ରେ କାଷ୍ଟ କରିବା ପୁଣି ଆରମ୍ଭ କରନ୍ତୁ</translation> <translation id="1561331397460162942">ଏହା ଲୋକେସନ ଅନୁମତି ଥିବା ଆପ୍ସ, ୱେବସାଇଟ ଏବଂ ସିଷ୍ଟମ ସେବାଗୁଡ଼ିକ ପାଇଁ ଲୋକେସନ ଆକ୍ସେସକୁ ଅନୁମତି ଦିଏ</translation> @@ -1421,7 +1421,6 @@ <translation id="1980168597243156">ସ୍ପେସ ଷ୍ଟେସନ</translation> <translation id="1981434377190976112">ସମସ୍ତ ୱେବସାଇଟରେ ଆପଣଙ୍କ ସବୁ ଡାଟା ପଢ଼ନ୍ତୁ</translation> <translation id="1982851102516626421">ଆପଣ ସାଇନ ଆଉଟ କରିଛନ୍ତି</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} ଏବଂ {field_2}}other{{field_1}, {field_2} ଏବଂ {field_3}}}</translation> <translation id="1984417487208496350">କୌଣସି ସୁରକ୍ଷା ନାହିଁ (ସୁପାରିଶ କରାଯାଇ ନାହିଁ)</translation> <translation id="198507684520034826">ସାହାଯ୍ୟ</translation> <translation id="1986836014090708999">ଉନ୍ନତ ଲୋକେସନ ସେଟିଂସ</translation> @@ -4926,7 +4925,6 @@ <translation id="4462159676511157176">କଷ୍ଟମ୍ ନାମ ସର୍ଭର୍</translation> <translation id="4465236939126352372"><ph name="APP_NAME" /> ପାଇଁ <ph name="TIME" />ର ସମୟ ସୀମା ସେଟ୍ କରାଯାଇଛି</translation> <translation id="4467373268340082204">ଭୁଲ PIN</translation> -<translation id="4467561276409486506">&କମ୍ପାକ୍ଟ ମୋଡକୁ ଟୋଗଲ କରନ୍ତୁ</translation> <translation id="4469324811108161144">ନୋଟଗୁଡ଼ିକ <ph name="CHARACTER_LIMIT" />ଟି ପର୍ଯ୍ୟନ୍ତ କେରେକ୍ଟର ସେଭ କରିପାରିବ।</translation> <translation id="4469762931504673593"><ph name="FOLDERNAME" />ରେ <ph name="ORIGIN" /> ଫାଇଲ୍ଗୁଡ଼ିକୁ ଏଡିଟ୍ କରିପାରିବେ</translation> <translation id="4470957202018033307">ବାହ୍ୟ ଷ୍ଟୋରେଜ୍ର ପସନ୍ଦଗୁଡ଼ିକ</translation> @@ -7428,6 +7426,7 @@ <translation id="6278776436938569440">ଲୋକେସନ୍ ପରିବର୍ତ୍ତନ କରନ୍ତୁ</translation> <translation id="6280215091796946657">ଏକ ଭିନ୍ନ ଆକାଉଣ୍ଟ ସାହାଯ୍ୟରେ ସାଇନ୍ ଇନ୍ କରନ୍ତୁ</translation> <translation id="6280912520669706465">ARC</translation> +<translation id="6281218688313242284">ଆପଣଙ୍କର &Google ଆକାଉଣ୍ଟକୁ ପରିଚାଳନା କରନ୍ତୁ</translation> <translation id="6282180787514676874">{COUNT,plural, =1{କାଗଜର 1ଟି ସିଟର ସୀମା ଅତିକ୍ରମ ହୋଇଛି}other{କାଗଜର {COUNT}ଟି ସିଟର ସୀମା ଅତିକ୍ରମ ହୋଇଛି}}</translation> <translation id="6282490239556659745"><ph name="SITE" />ରୁ <ph name="EMBEDDED_SITE" />କୁ କାଢ଼ି ଦିଅନ୍ତୁ</translation> <translation id="6283438600881103103">ବର୍ତ୍ତମାନ ଆପଣ ସ୍ୱଚାଳିତ ଭାବେ ସାଇନ୍ ଆଉଟ୍ ହୋଇଯିବେ। @@ -7856,7 +7855,7 @@ <translation id="6607831829715835317">ଅଧିକ ଟୁ&ଲ୍</translation> <translation id="6607890859198268021"><ph name="USER_EMAIL" /> ପୂର୍ବରୁ <ph name="DOMAIN" /> ଦ୍ୱାରା ପରିଚାଳିତ ହେଉଛି। ଏକ ଭିନ୍ନ Google ଆକାଉଣ୍ଟ ସହ ବାପାମାଙ୍କ ନିୟନ୍ତ୍ରଣ ବ୍ୟବହାର କରିବା ପାଇଁ, ସେଟଅପ୍ କରିବା ପରେ ସାଇନ୍ ଆଉଟ୍ କରନ୍ତୁ, ତା'ପରେ ସାଇନ୍-ଇନ୍ ସ୍କ୍ରିନରେ "ବ୍ୟକ୍ତିଙ୍କୁ ଯୋଗ କରନ୍ତୁ"କୁ ଚୟନ କରନ୍ତୁ।</translation> <translation id="6608166463665411119">eSIMକୁ ରିସେଟ କରନ୍ତୁ</translation> -<translation id="660846213831377756">ମାଉସ କୀଗୁଡ଼ିକ</translation> +<translation id="660846213831377756">ମାଉସ କୀ</translation> <translation id="6608773371844092260">ଟିପଚିହ୍ନ ସେଟ ଅପ କରିବା ପାଇଁ ଆପଣଙ୍କ ପିଲାକୁ ଏହି <ph name="DEVICE_TYPE" />ର ଡାହାଣ ପାର୍ଶ୍ୱରେ ଥିବା ଟିପଚିହ୍ନ ସେନ୍ସରକୁ ସ୍ପର୍ଶ କରିବା ପାଇଁ ଦିଅନ୍ତୁ। ଆପଣଙ୍କ ପିଲାର ଟିପଚିହ୍ନ ଡାଟାକୁ ସୁରକ୍ଷିତ ଭାବେ ଷ୍ଟୋର କରାଯାଇଛି ଏବଂ ଏହାକୁ କେବେ ବି ଏହି <ph name="DEVICE_TYPE" />ରୁ କାଢ଼ି ଦିଆଯାଏ ନାହିଁ।</translation> <translation id="6609478180749378879">ଆପଣ ଇନକଗ୍ନିଟୋ ମୋଡରୁ ବାହାରି ଯିବା ପରେ ସାଇନ୍-ଇନ୍ ଡାଟା ଏହି ଡିଭାଇସରେ ଷ୍ଟୋର୍ କରାଯିବ। ଆପଣ ଆପଣଙ୍କ ଡିଭାଇସ୍ ମାଧ୍ୟମରେ ଏହି ୱେବସାଇଟରେ ପରେ ପୁଣି ସାଇନ୍ ଇନ୍ କରିବାକୁ ସକ୍ଷମ ହେବେ।</translation> <translation id="6610002944194042868">ଅନୁବାଦର ବିକଳ୍ପଗୁଡ଼ିକ</translation> @@ -8041,6 +8040,7 @@ <translation id="6745592621698551453">ବର୍ତ୍ତମାନ ଅପ୍ଡେଟ୍ କରନ୍ତୁ</translation> <translation id="6746124502594467657">ତଳକୁ ଚାଳନ କରନ୍ତୁ</translation> <translation id="67465227497040338"><ph name="DOMAIN" /> ପାଇଁ ପାସୱାର୍ଡ ଦେଖାନ୍ତୁ</translation> +<translation id="6746834324024491643">ଆପଣଙ୍କର ସମସ୍ତ ଡିଭାଇସରେ ଆପଣଙ୍କର ପାସୱାର୍ଡ ଏବଂ ଆହୁରି ଅନେକ କିଛି ପାଇବାକୁ, <ph name="EMAIL" /> ଭାବେ ସାଇନ ଇନ କରନ୍ତୁ</translation> <translation id="6748980958975836188">ମୁଁ <ph name="BEGIN_LINK1" />Google ସେବାର ସର୍ତ୍ତାବଳୀ<ph name="END_LINK1" />, <ph name="BEGIN_LINK2" />Chrome ଏବଂ ChromeOS ଅତିରିକ୍ତ ସେବାର ସର୍ତ୍ତାବଳୀ<ph name="END_LINK2" />କୁ ପଢ଼ିଛି ଓ ସେଥିରେ ସମ୍ମତ ହୋଇଛି।</translation> <translation id="6749077623962119521">ଅନୁମତିଗୁଡ଼ିକୁ ରିସେଟ୍ କରିବେ?</translation> <translation id="6749473226660745022">ଫଟୋଗୁଡ଼ିକ</translation>
diff --git a/chrome/app/resources/generated_resources_pa.xtb b/chrome/app/resources/generated_resources_pa.xtb index e75cec92..f9912d1 100644 --- a/chrome/app/resources/generated_resources_pa.xtb +++ b/chrome/app/resources/generated_resources_pa.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">ਤੁਹਾਡੇ ਬੱਚੇ ਵੱਲੋਂ ਡੀਵਾਈਸ ਨੂੰ ਅਣਲਾਕ ਕਰਨ ਲਈ ਪਿੰਨ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ।</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216"><ph name="LANGUAGE" /> ਲਈ ਸ਼ਬਦ-ਜੋੜ ਜਾਂਚ ਸ਼ਬਦਕੋਸ਼ ਨੂੰ ਡਾਊਨਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।</translation> +<translation id="1078029726086090536">ਆਪਣੇ ਪਾਸਵਰਡ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ</translation> <translation id="1078037449555275327">ChromeVox ਸੈਟਿੰਗਾਂ</translation> <translation id="1079242569060319448">ਕੀ ਪਿੰਨ ਭੁੱਲ ਗਏ ਹੋ?</translation> <translation id="1079285777677001938">ਸ਼ਾਇਦ ਕੁਝ ਸਾਈਟਾਂ 'ਤੇ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਕੰਮ ਨਾ ਕਰਨ।</translation> @@ -1435,7 +1436,6 @@ <translation id="1980168597243156">ਸਪੇਸ ਸਟੇਸ਼ਨ</translation> <translation id="1981434377190976112">ਸਾਰੀਆਂ ਵੈੱਬਸਾਈਟਾਂ 'ਤੇ ਆਪਣਾ ਸਾਰਾ ਡਾਟਾ ਪੜ੍ਹੋ</translation> <translation id="1982851102516626421">ਤੁਸੀਂ ਸਾਈਨ-ਆਊਟ ਹੋ ਗਏ ਹੋ</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} ਅਤੇ {field_2}}one{{field_1}, {field_2}, ਅਤੇ {field_3}}other{{field_1}, {field_2}, ਅਤੇ {field_3}}}</translation> <translation id="1984417487208496350">ਕੋਈ ਸੁਰੱਖਿਆ ਨਹੀਂ (ਇਸਦੀ ਸਿਫ਼ਾਰਸ਼ ਨਹੀਂ ਕੀਤੀ ਜਾਂਦੀ)</translation> <translation id="198507684520034826">ਮਦਦ</translation> <translation id="1986836014090708999">ਅਡਵਾਂਸ ਟਿਕਾਣਾ ਸੈਟਿੰਗਾਂ</translation> @@ -4096,6 +4096,7 @@ <translation id="3848547754896969219">&ਇਨਕੋਗਨਿਟੋ ਵਿੰਡੋ ਵਿੱਚ ਖੋਲ੍ਹੋ</translation> <translation id="3850172593216628215">ਸੁਰੱਖਿਆ ਅੱਪਡੇਟ ਸਮਾਪਤ ਹੋ ਗਏ ਹਨ। ਨਵੀਂ Chromebook 'ਤੇ $50 ਜਾਂ ਇਸ ਤੋਂ ਵੱਧ ਦੀ ਬਚਤ ਕਰੋ।</translation> <translation id="385051799172605136">ਪਿੱਛੇ</translation> +<translation id="3850989673553106152">ਪਾਸਵਰਡ ਬਦਲਿਆ ਗਿਆ</translation> <translation id="3851428669031642514">ਅਸੁਰੱਖਿਅਤ ਸਕ੍ਰਿਪਟਾਂ ਲੋਡ ਕਰੋ</translation> <translation id="3852215160863921508">ਇਨਪੁੱਟ ਸਹਾਇਤਾ</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" /> ਚਾਲੂ ਹੈ</translation> @@ -4598,6 +4599,7 @@ <translation id="421182450098841253">&ਬੁੱਕਮਾਰਕਸ ਬਾਰ ਦਿਖਾਓ</translation> <translation id="4211904048067111541">Android ਐਪਾਂ ਨਾਲ ਵਰਤਣਾ ਬੰਦ ਕਰੋ</translation> <translation id="42126664696688958">ਨਿਰਯਾਤ ਕਰੋ</translation> +<translation id="4213540068152645535">ਤੁਹਾਡਾ ਪਾਸਵਰਡ ਬਦਲਣ ਵਿੱਚ ਸਮੱਸਿਆ ਆਈ</translation> <translation id="42137655013211669">ਇਸ ਸਾਧਨ ਤੱਕ ਪਹੁੰਚ ਸਰਵਰ ਵੱਲੋਂ ਵਰਜਿਤ ਸੀ।</translation> <translation id="4213918571089943508">ਬੱਚੇ ਦਾ Google ਖਾਤਾ</translation> <translation id="4214192212360095377">ਹੁਣੇ ਬੰਦ ਕਰੋ</translation> @@ -4944,7 +4946,6 @@ <translation id="4462159676511157176">ਨਾਮ ਸਰਵਰ ਨੂੰ ਵਿਉਂਤਬੱਧ ਕਰੋ</translation> <translation id="4465236939126352372"><ph name="APP_NAME" /> ਲਈ <ph name="TIME" /> ਸਮਾਂ ਸੀਮਾ ਸੈੱਟ ਕੀਤੀ ਗਈ</translation> <translation id="4467373268340082204">ਗਲਤ ਪਿੰਨ</translation> -<translation id="4467561276409486506">&ਸੰਖਿਪਤ ਮੋਡ ਟੌਗਲ ਕਰੋ</translation> <translation id="4469324811108161144">ਨੋਟ-ਕਥਨਾਂ ਵਿੱਚ <ph name="CHARACTER_LIMIT" /> ਅੱਖਰ-ਚਿੰਨ੍ਹ ਤੱਕ ਰੱਖਿਅਤ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ।</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> ਸਾਈਟ <ph name="FOLDERNAME" /> ਵਿਚਲੀਆਂ ਫ਼ਾਈਲਾਂ ਦਾ ਸੰਪਾਦਨ ਕਰ ਸਕਦੀ ਹੈ</translation> <translation id="4470957202018033307">ਬਾਹਰੀ ਸਟੋਰੇਜ ਦੀਆਂ ਤਰਜੀਹਾਂ</translation> @@ -7449,6 +7450,7 @@ <translation id="6278776436938569440">ਟਿਕਾਣਾ ਬਦਲੋ</translation> <translation id="6280215091796946657">ਕਿਸੇ ਵੱਖਰੇ ਖਾਤੇ ਨਾਲ ਸਾਈਨ-ਇਨ ਕਰੋ</translation> <translation id="6280912520669706465">ARC</translation> +<translation id="6281218688313242284">ਆਪਣੇ Google ਖਾਤੇ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ</translation> <translation id="6282180787514676874">{COUNT,plural, =1{1 ਕਾਗਜ਼ ਦੀ ਸ਼ੀਟ ਦੀ ਸੀਮਾ ਨੂੰ ਪਾਰ ਕਰਦੀ ਹੈ}one{{COUNT} ਕਾਗਜ਼ ਦੀ ਸ਼ੀਟ ਦੀ ਸੀਮਾ ਨੂੰ ਪਾਰ ਕਰਦੀ ਹੈ}other{{COUNT} ਕਾਗਜ਼ ਦੀਆਂ ਸ਼ੀਟਾਂ ਦੀ ਸੀਮਾ ਨੂੰ ਪਾਰ ਕਰਦੀ ਹੈ}}</translation> <translation id="6282490239556659745"><ph name="SITE" /> ਤੋਂ <ph name="EMBEDDED_SITE" /> ਨੂੰ ਹਟਾਓ</translation> <translation id="6283438600881103103">ਤੁਹਾਨੂੰ ਹੁਣ ਸਵੈਚਲਿਤ ਤੌਰ 'ਤੇ ਸਾਈਨ-ਆਊਟ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ। @@ -8063,6 +8065,7 @@ <translation id="6745592621698551453">ਹੁਣ ਅੱਪਡੇਟ ਕਰੋ</translation> <translation id="6746124502594467657">ਹੇਠਾਂ ਜਾਓ</translation> <translation id="67465227497040338"><ph name="DOMAIN" /> ਲਈ ਪਾਸਵਰਡ ਦਿਖਾਓ</translation> +<translation id="6746834324024491643">ਆਪਣੇ ਸਾਰੇ ਡੀਵਾਈਸਾਂ 'ਤੇ ਆਪਣੇ ਪਾਸਵਰਡ ਅਤੇ ਹੋਰ ਚੀਜ਼ਾਂ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, <ph name="EMAIL" /> ਨਾਲ ਸਾਈਨ ਇਨ ਕਰੋ</translation> <translation id="6748980958975836188">ਮੈਂ <ph name="BEGIN_LINK1" />Google ਦੇ ਸੇਵਾ ਦੇ ਨਿਯਮਾਂ<ph name="END_LINK1" />, <ph name="BEGIN_LINK2" />Chrome ਅਤੇ ChromeOS ਦੇ ਵਧੀਕ ਸੇਵਾ ਦੇ ਨਿਯਮਾਂ<ph name="END_LINK2" /> ਨੂੰ ਪੜ੍ਹ ਲਿਆ ਹੈ ਅਤੇ ਉਨ੍ਹਾਂ ਨਾਲ ਸਹਿਮਤ ਹਾਂ।</translation> <translation id="6749077623962119521">ਕੀ ਇਜਾਜ਼ਤਾਂ ਨੂੰ ਰੀਸੈੱਟ ਕਰਨਾ ਹੈ?</translation> <translation id="6749473226660745022">ਫ਼ੋਟੋਆਂ</translation> @@ -8320,6 +8323,7 @@ <translation id="6913051485529944333">ਤੁਹਾਨੂੰ ਦੁਬਾਰਾ ਇਸ ਪੰਨੇ 'ਤੇ Google Calendar ਨਹੀਂ ਦਿਸੇਗਾ</translation> <translation id="6914812290245989348">ਅਸੁਰੱਖਿਅਤ ਸਾਈਟਾਂ 'ਤੇ ਜਾਣ ਤੋਂ ਪਹਿਲਾਂ ਕੋਈ ਚਿਤਾਵਨੀ ਨਹੀਂ ਦਿਖੇਗੀ</translation> <translation id="6916590542764765824">ਐਕਸਟੈਂਸ਼ਨ ਵਿਵਸਥਿਤ ਕਰੋ</translation> +<translation id="6916676294509106572">Outlook Calendar ਨੂੰ ਲੁਕਾਇਆ ਗਿਆ</translation> <translation id="6917873303492266709">ਟੈਬ ਗਰੁੱਪਾਂ ਨੂੰ ਸਾਂਝਾ ਕਰਨ, ਉਨ੍ਹਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਣ ਅਤੇ ਉਨ੍ਹਾਂ ਦਾ ਸਹਿਯੋਗ ਕਰਨ ਲਈ, ਸੈਟਿੰਗਾਂ ਖੋਲ੍ਹੋ ਅਤੇ 'Chrome ਵਿੱਚ ਸਾਈਨ-ਇਨ ਦੀ ਆਗਿਆ ਦਿਓ' ਨੂੰ ਚਾਲੂ ਕਰੋ</translation> <translation id="6918677045355889289">ChromeOS ਅੱਪਡੇਟ ਲੋੜੀਂਦਾ ਹੈ</translation> <translation id="6918733588290914545">Android ਫ਼ੋਨ ਨਾਲ ਤਤਕਾਲ ਸੈੱਟਅੱਪ</translation> @@ -10697,6 +10701,7 @@ <translation id="8625124982056504555">ChromeOS ਡੀਵਾਈਸ ਅਤੇ ਕੰਪੋਨੈਂਟ ਦੇ ਸੀਰੀਅਲ ਨੰਬਰ ਪੜ੍ਹੋ</translation> <translation id="862542460444371744">&ਐਕਸਟੈਂਸ਼ਨਾਂ</translation> <translation id="8625663000550647058">ਤੁਹਾਡੇ ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ</translation> +<translation id="8625679025395572221">ਤੁਹਾਡਾ ਖਾਤਾ ਹਾਲੇ ਵੀ ਜੋਖਮ ਵਿੱਚ ਹੋ ਸਕਦਾ ਹੈ।</translation> <translation id="8625916342247441948">ਸਾਈਟਾਂ ਨੂੰ HID ਡੀਵਾਈਸਾਂ ਨਾਲ ਕਨੈਕਟ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਾ ਦਿਓ</translation> <translation id="862727964348362408">ਮੁਅੱਤਲ ਕੀਤਾ</translation> <translation id="862750493060684461">CSS ਕੈਸ਼ੇ</translation>
diff --git a/chrome/app/resources/generated_resources_pl.xtb b/chrome/app/resources/generated_resources_pl.xtb index 1a5f011..28864f1 100644 --- a/chrome/app/resources/generated_resources_pl.xtb +++ b/chrome/app/resources/generated_resources_pl.xtb
@@ -1427,7 +1427,6 @@ <translation id="1980168597243156">Stacja kosmiczna</translation> <translation id="1981434377190976112">Odczytywanie wszystkich Twoich danych we wszystkich witrynach</translation> <translation id="1982851102516626421">Nie korzystasz teraz z konta</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} i {field_2}}few{{field_1}, {field_2} i {field_3}}many{{field_1}, {field_2} i {field_3}}other{{field_1}, {field_2} i {field_3}}}</translation> <translation id="1984417487208496350">Brak ochrony (niezalecane)</translation> <translation id="198507684520034826">Pomoc</translation> <translation id="1986836014090708999">Zaawansowane ustawienia lokalizacji</translation> @@ -4916,7 +4915,6 @@ <translation id="4462159676511157176">Własne serwery nazw</translation> <translation id="4465236939126352372">Ustawiono limit czasu <ph name="TIME" /> dla aplikacji <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">Nieprawidłowy kod PIN</translation> -<translation id="4467561276409486506">&Przełącz tryb kompaktowy</translation> <translation id="4469324811108161144">Limit znaków w notatce wynosi <ph name="CHARACTER_LIMIT" />.</translation> <translation id="4469762931504673593">Strona <ph name="ORIGIN" /> może edytować pliki w folderze <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Ustawienia pamięci zewnętrznej</translation>
diff --git a/chrome/app/resources/generated_resources_pt-BR.xtb b/chrome/app/resources/generated_resources_pt-BR.xtb index 238a4e7..6d72443 100644 --- a/chrome/app/resources/generated_resources_pt-BR.xtb +++ b/chrome/app/resources/generated_resources_pt-BR.xtb
@@ -1435,7 +1435,6 @@ <translation id="1980168597243156">Estação espacial</translation> <translation id="1981434377190976112">Ler seus dados em qualquer site</translation> <translation id="1982851102516626421">Sua conta está desconectada</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} e {field_2}}one{{field_1}, {field_2} e {field_3}}other{{field_1}, {field_2} e {field_3}}}</translation> <translation id="1984417487208496350">Sem proteção (não recomendado)</translation> <translation id="198507684520034826">Ajuda</translation> <translation id="1986836014090708999">Configurações avançadas de localização</translation> @@ -4943,7 +4942,6 @@ <translation id="4462159676511157176">Servidores de nome personalizados</translation> <translation id="4465236939126352372">Tempo limite de <ph name="TIME" /> definido para <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">PIN incorreto</translation> -<translation id="4467561276409486506">&Ativar/desativar o modo compacto</translation> <translation id="4469324811108161144">Observações podem ter até <ph name="CHARACTER_LIMIT" /> caracteres.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> pode editar arquivos em <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Preferências de armazenamento externo</translation>
diff --git a/chrome/app/resources/generated_resources_pt-PT.xtb b/chrome/app/resources/generated_resources_pt-PT.xtb index fc4eaf34..a32b740d 100644 --- a/chrome/app/resources/generated_resources_pt-PT.xtb +++ b/chrome/app/resources/generated_resources_pt-PT.xtb
@@ -1425,7 +1425,6 @@ <translation id="1980168597243156">Estação espacial</translation> <translation id="1981434377190976112">Ler todos os seus dados em todos os Websites</translation> <translation id="1982851102516626421">Não tem sessão iniciada</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} e {field_2}}other{{field_1}, {field_2} e {field_3}}}</translation> <translation id="1984417487208496350">Sem proteção (não recomendado)</translation> <translation id="198507684520034826">Ajuda</translation> <translation id="1986836014090708999">Definições de localização avançadas</translation> @@ -4933,7 +4932,6 @@ <translation id="4462159676511157176">Servidores de nome personalizado</translation> <translation id="4465236939126352372">Limite de tempo de <ph name="TIME" /> definido para a app <ph name="APP_NAME" />.</translation> <translation id="4467373268340082204">PIN incorreto</translation> -<translation id="4467561276409486506">&Ativar/desativar modo compacto</translation> <translation id="4469324811108161144">As notas podem ter até <ph name="CHARACTER_LIMIT" /> carateres.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> pode editar ficheiros em <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Preferências de armazenamento externo</translation>
diff --git a/chrome/app/resources/generated_resources_ro.xtb b/chrome/app/resources/generated_resources_ro.xtb index 73672ce..b0c3b9d 100644 --- a/chrome/app/resources/generated_resources_ro.xtb +++ b/chrome/app/resources/generated_resources_ro.xtb
@@ -1426,7 +1426,6 @@ <translation id="1980168597243156">Stație spațială</translation> <translation id="1981434377190976112">să citească toate datele de pe toate site-urile</translation> <translation id="1982851102516626421">Te-ai deconectat</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} și {field_2}}few{{field_1}, {field_2} și {field_3}}other{{field_1}, {field_2} și {field_3}}}</translation> <translation id="1984417487208496350">Fără protecție (nu este recomandat)</translation> <translation id="198507684520034826">Ajutor</translation> <translation id="1986836014090708999">Setări avansate privind locația</translation> @@ -4932,7 +4931,6 @@ <translation id="4462159676511157176">Servere de nume personalizate</translation> <translation id="4465236939126352372">A fost setată o limită de timp de <ph name="TIME" /> pentru <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">PIN greșit</translation> -<translation id="4467561276409486506">&Schimbă modul compact</translation> <translation id="4469324811108161144">Notele pot conține până la <ph name="CHARACTER_LIMIT" /> caractere.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> poate să modifice fișiere din <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Preferințe pentru stocarea externă</translation>
diff --git a/chrome/app/resources/generated_resources_ru.xtb b/chrome/app/resources/generated_resources_ru.xtb index 731e348..1fe6f81d 100644 --- a/chrome/app/resources/generated_resources_ru.xtb +++ b/chrome/app/resources/generated_resources_ru.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Ребенок может использовать PIN-код для разблокировки устройства.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">Не удалось скачать словарь для проверки правописания (язык: <ph name="LANGUAGE" />). Повторите попытку.</translation> +<translation id="1078029726086090536">Подтвердить пароль</translation> <translation id="1078037449555275327">Настройки ChromeVox</translation> <translation id="1079242569060319448">Забыли PIN-код?</translation> <translation id="1079285777677001938">Функции некоторых сайтов могут стать недоступными.</translation> @@ -803,7 +804,7 @@ <translation id="1556127816860282890">Может быть ограничена работа фоновых процессов и некоторых визуальных эффектов, например плавной прокрутки.</translation> <translation id="1556537182262721003">Не удалось переместить каталог расширений в профиль.</translation> <translation id="1557939148300698553">Создать профиль</translation> -<translation id="155803912725350982">Медленные клавиши</translation> +<translation id="155803912725350982">Долгие нажатия клавиш</translation> <translation id="155865706765934889">Сенсорная панель</translation> <translation id="1558671750917454373">Возобновить трансляцию на устройство "<ph name="DEVICE_NAME" />"</translation> <translation id="1561331397460162942">Информацию о местоположении смогут использовать приложения и сайты с разрешением на доступ к ней, а также системные службы.</translation> @@ -1426,7 +1427,6 @@ <translation id="1980168597243156">Космическая станция</translation> <translation id="1981434377190976112">Просмотр ваших данных на всех сайтах.</translation> <translation id="1982851102516626421">Вход не выполнен</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} и {field_2}}one{{field_1}, {field_2} и {field_3}}few{{field_1}, {field_2} и {field_3}}many{{field_1}, {field_2} и {field_3}}other{{field_1}, {field_2} и {field_3}}}</translation> <translation id="1984417487208496350">Защита отключена (не рекомендуется)</translation> <translation id="198507684520034826">Справка</translation> <translation id="1986836014090708999">Дополнительные настройки геолокации</translation> @@ -4083,6 +4083,7 @@ <translation id="3848547754896969219">Открыть в режиме &инкогнито</translation> <translation id="3850172593216628215">Обновлений системы безопасности больше не будет. Сэкономьте от 50 долларов США при покупке нового Chromebook</translation> <translation id="385051799172605136">Назад</translation> +<translation id="3850989673553106152">Пароль изменен</translation> <translation id="3851428669031642514">Загрузить небезопасные скрипты</translation> <translation id="3852215160863921508">Помощь при вводе</translation> <translation id="3853549894831560772">Устройство "<ph name="DEVICE_NAME" />" включено.</translation> @@ -4585,6 +4586,7 @@ <translation id="421182450098841253">Показывать панель &закладок</translation> <translation id="4211904048067111541">Не использовать в приложениях для Android</translation> <translation id="42126664696688958">Экспортировать</translation> +<translation id="4213540068152645535">Не удалось изменить пароль</translation> <translation id="42137655013211669">Доступ к этому ресурсу запрещен сервером.</translation> <translation id="4213918571089943508">Аккаунт Google ребенка</translation> <translation id="4214192212360095377">Отключить</translation> @@ -4931,7 +4933,6 @@ <translation id="4462159676511157176">Другие серверы имен</translation> <translation id="4465236939126352372">Для приложения "<ph name="APP_NAME" />" установлен лимит <ph name="TIME" />.</translation> <translation id="4467373268340082204">Неверный PIN-код.</translation> -<translation id="4467561276409486506">&Включить или отключить компактный режим</translation> <translation id="4469324811108161144">Максимальное количество символов в примечании: <ph name="CHARACTER_LIMIT" />.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> может изменять файлы в папке "<ph name="FOLDERNAME" />".</translation> <translation id="4470957202018033307">Настройки внешних накопителей</translation> @@ -7870,7 +7871,7 @@ <translation id="6607831829715835317">Дополнительные инстру&менты</translation> <translation id="6607890859198268021">Аккаунт <ph name="USER_EMAIL" /> уже находится в домене <ph name="DOMAIN" />. Чтобы использовать родительский контроль в другом аккаунте Google, выйдите после настройки и на экране входа выберите "Добавить пользователя".</translation> <translation id="6608166463665411119">Сбросить eSIM</translation> -<translation id="660846213831377756">Кнопки мыши</translation> +<translation id="660846213831377756">Клавиши управления мышью</translation> <translation id="6608773371844092260">Чтобы настроить разблокировку по отпечатку, попросите ребенка приложить палец к сканеру отпечатков на правой боковой части устройства <ph name="DEVICE_TYPE" />. Данные отпечатков пальцев ребенка надежно защищены и хранятся только на устройстве <ph name="DEVICE_TYPE" />.</translation> <translation id="6609478180749378879">После выхода из режима инкогнито учетные данные сохранятся на устройстве. Вы сможете снова использовать их на этом сайте в будущем.</translation> <translation id="6610002944194042868">Параметры перевода</translation> @@ -8312,6 +8313,7 @@ <translation id="6913051485529944333">На этой странице Google Календарь больше не появится.</translation> <translation id="6914812290245989348">Не показывать предупреждения о переходе на незащищенные сайты</translation> <translation id="6916590542764765824">Управление расширениями</translation> +<translation id="6916676294509106572">Календарь Outlook скрыт.</translation> <translation id="6917873303492266709">Чтобы делиться группами вкладок, присоединяться к ним и работать вместе с другими пользователями, откройте настройки и включите параметр "Разрешить вход в Chrome".</translation> <translation id="6918677045355889289">Обновите Chrome OS</translation> <translation id="6918733588290914545">Быстрая настройка с помощью телефона Android</translation> @@ -10691,6 +10693,7 @@ <translation id="8625124982056504555">Чтение серийных номеров устройства с ChromeOS и его компонентов</translation> <translation id="862542460444371744">Расширения</translation> <translation id="8625663000550647058">Запретить сайтам использовать микрофон</translation> +<translation id="8625679025395572221">Аккаунт по-прежнему может быть под угрозой.</translation> <translation id="8625916342247441948">Запретить сайтам подключаться к HID-устройствам</translation> <translation id="862727964348362408">Приостановлено</translation> <translation id="862750493060684461">Кеш CSS</translation>
diff --git a/chrome/app/resources/generated_resources_si.xtb b/chrome/app/resources/generated_resources_si.xtb index 560959b1..94d35ec 100644 --- a/chrome/app/resources/generated_resources_si.xtb +++ b/chrome/app/resources/generated_resources_si.xtb
@@ -1423,7 +1423,6 @@ <translation id="1980168597243156">අභ්යවකාශ මධ්යස්ථානය</translation> <translation id="1981434377190976112">සියලු වෙබ් අඩවිවල ඔබගේ සියලු දත්ත කියවන්න</translation> <translation id="1982851102516626421">ඔබ වරනය වී ඇත</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} සහ {field_2}}one{{field_1}, {field_2}, සහ {field_3}}other{{field_1}, {field_2}, සහ {field_3}}}</translation> <translation id="1984417487208496350">ආරක්ෂාවක් නැත (නිර්දේශ නොකෙරේ)</translation> <translation id="198507684520034826">උදවු</translation> <translation id="1986836014090708999">උසස් ස්ථාන සැකසීම්</translation> @@ -4930,7 +4929,6 @@ <translation id="4462159676511157176">රුචි නාම සේවාදායක</translation> <translation id="4465236939126352372"><ph name="APP_NAME" /> සඳහා සකසන ලද වේලා සීමාව <ph name="TIME" /></translation> <translation id="4467373268340082204">PIN එක වැරදියි</translation> -<translation id="4467561276409486506">&සංයුක්ත ප්රකාරය ටොගල් කරන්න</translation> <translation id="4469324811108161144">සටහන්වලට අනුලකුණු <ph name="CHARACTER_LIMIT" />ක් දක්වා සුරැකිය හැකිය.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> හට <ph name="FOLDERNAME" /> තුළ ඇති ගොනු සංස්කරණ කළ හැක</translation> <translation id="4470957202018033307">බාහිර ආචයන මනාප</translation> @@ -7436,6 +7434,7 @@ <translation id="6278776436938569440">ස්ථානය මාරු කරන්න</translation> <translation id="6280215091796946657">වෙනස් ගිණුමක් සමඟ පුරන්න</translation> <translation id="6280912520669706465">ARC</translation> +<translation id="6281218688313242284">ඔබේ &Google ගිණුම කළමනාකරණය කරන්න</translation> <translation id="6282180787514676874">{COUNT,plural, =1{1 කඩදාසි කොළයක් යන සීමාව ඉක්මවයි}one{කඩදාසි කොළ {COUNT} ක් යන සීමාව ඉක්මවයි}other{කඩදාසි කොළ {COUNT} ක් යන සීමාව ඉක්මවයි}}</translation> <translation id="6282490239556659745"><ph name="SITE" /> වෙතින් <ph name="EMBEDDED_SITE" /> ඉවත් කරන්න</translation> <translation id="6283438600881103103">ඔබ දැන් ස්වයංක්රියව වරනු ඇත. @@ -8047,6 +8046,7 @@ <translation id="6745592621698551453">දැන් යාවත් කරන්න</translation> <translation id="6746124502594467657">පහළට ගෙන යන්න</translation> <translation id="67465227497040338"><ph name="DOMAIN" /> සඳහා මුරපදය පෙන්වන්න</translation> +<translation id="6746834324024491643">ඔබේ සියලු ම උපාංගවල මුරපද සහ තවත් දේ ලබා ගැනීමට, <ph name="EMAIL" /> ලෙස පුරනය වන්න</translation> <translation id="6748980958975836188">මම <ph name="BEGIN_LINK1" />Google සේවා නියම<ph name="END_LINK1" />, <ph name="BEGIN_LINK2" />Chrome සහ ChromeOS අතිරේක සේවා නියම<ph name="END_LINK2" /> කියවා එකඟ වෙමි.</translation> <translation id="6749077623962119521">අවසර යළි සකසන්නද?</translation> <translation id="6749473226660745022">ඡායාරූප</translation>
diff --git a/chrome/app/resources/generated_resources_sk.xtb b/chrome/app/resources/generated_resources_sk.xtb index 4f6440a..d9e332ce 100644 --- a/chrome/app/resources/generated_resources_sk.xtb +++ b/chrome/app/resources/generated_resources_sk.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Vaše dieťa môže toto zariadenie odomykať kódom PIN.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">Slovník na kontrolu pravopisu v jazyku <ph name="LANGUAGE" /> sa nepodarilo stiahnuť. Skúste to znova.</translation> +<translation id="1078029726086090536">Overiť heslo</translation> <translation id="1078037449555275327">Nastavenia čítačky ChromeVox</translation> <translation id="1079242569060319448">Zabudli ste PIN?</translation> <translation id="1079285777677001938">Funkcie na niektorých weboch nemusia fungovať.</translation> @@ -1426,7 +1427,6 @@ <translation id="1980168597243156">Vesmírna stanica</translation> <translation id="1981434377190976112">Čítať všetky vaše údaje na všetkých weboch</translation> <translation id="1982851102516626421">Nemáte aktívne prihlásenie</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} a {field_2}}few{{field_1}, {field_2} a {field_3}}many{{field_1}, {field_2} a {field_3}}other{{field_1}, {field_2} a {field_3}}}</translation> <translation id="1984417487208496350">Bez ochrany (neodporúča sa)</translation> <translation id="198507684520034826">Pomocník</translation> <translation id="1986836014090708999">Rozšírené nastavenia polohy</translation> @@ -4083,6 +4083,7 @@ <translation id="3848547754896969219">Otvoriť v okne &inkognito</translation> <translation id="3850172593216628215">Bezpečnostné aktualizácie už nebudú k dispozícii. Ušetrite pri kúpe nového Chromebooku 50 USD alebo viac.</translation> <translation id="385051799172605136">Späť</translation> +<translation id="3850989673553106152">Heslo bolo zmenené</translation> <translation id="3851428669031642514">Načítať nebezpečné skripty</translation> <translation id="3852215160863921508">Pomoc so vstupom</translation> <translation id="3853549894831560772">Zariadenie <ph name="DEVICE_NAME" /> je zapnuté</translation> @@ -4585,6 +4586,7 @@ <translation id="421182450098841253">&Zobraziť panel so záložkami</translation> <translation id="4211904048067111541">Prestať používať s aplikáciami pre Android</translation> <translation id="42126664696688958">Exportovať</translation> +<translation id="4213540068152645535">Pri zmene hesla sa vyskytol problém</translation> <translation id="42137655013211669">Server zakázal prístup k tomuto zdroju</translation> <translation id="4213918571089943508">Účet Google dieťaťa</translation> <translation id="4214192212360095377">Vypnúť</translation> @@ -4931,7 +4933,6 @@ <translation id="4462159676511157176">Vlastné menné servery</translation> <translation id="4465236939126352372">Pre aplikáciu <ph name="APP_NAME" /> bol nastavený časový limit <ph name="TIME" /></translation> <translation id="4467373268340082204">Nesprávny kód PIN</translation> -<translation id="4467561276409486506">&Prepnúť kompaktný režim</translation> <translation id="4469324811108161144">Poznámky môžu uložiť maximálne tento počet znakov: <ph name="CHARACTER_LIMIT" />.</translation> <translation id="4469762931504673593">Web <ph name="ORIGIN" /> môže upravovať súbory v priečinku <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Predvoľby externých úložísk</translation> @@ -7435,6 +7436,7 @@ <translation id="6278776436938569440">Zmeniť umiestnenie</translation> <translation id="6280215091796946657">Prihlásiť sa pomocou iného účtu</translation> <translation id="6280912520669706465">ARC</translation> +<translation id="6281218688313242284">Spravovať účet &Google</translation> <translation id="6282180787514676874">{COUNT,plural, =1{Prekračuje limit 1 hárka papiera}few{Prekračuje limit {COUNT} hárkov papiera}many{Prekračuje limit {COUNT} hárka papiera}other{Prekračuje limit {COUNT} hárkov papiera}}</translation> <translation id="6282490239556659745">Odstrániť <ph name="EMBEDDED_SITE" /> z webu <ph name="SITE" /></translation> <translation id="6283438600881103103">Systém vás teraz automaticky odhlási. @@ -8050,6 +8052,7 @@ <translation id="6745592621698551453">Aktualizovať</translation> <translation id="6746124502594467657">Presunúť nadol</translation> <translation id="67465227497040338">Zobraziť heslo domény <ph name="DOMAIN" /></translation> +<translation id="6746834324024491643">Ak chcete mať heslá a ďalší obsah k dispozícii vo všetkých svojich zariadeniach, prihláste sa ako <ph name="EMAIL" /></translation> <translation id="6748980958975836188">Prečítal(a) som si <ph name="BEGIN_LINK1" />zmluvné podmienky spoločnosti Google<ph name="END_LINK1" /> aj <ph name="BEGIN_LINK2" />dodatočné zmluvné podmienky prehliadača Chrome a systému Chrome OS<ph name="END_LINK2" /> a súhlasím s nimi.</translation> <translation id="6749077623962119521">Chcete resetovať povolenia?</translation> <translation id="6749473226660745022">Fotky</translation> @@ -8307,6 +8310,7 @@ <translation id="6913051485529944333">Kalendár Google už na tejto stránke neuvidíte</translation> <translation id="6914812290245989348">Nezobrazovať upozornenia pred prejdením na nezabezpečené weby</translation> <translation id="6916590542764765824">Spravovať rozšírenia</translation> +<translation id="6916676294509106572">Kalendár Outlook je skrytý</translation> <translation id="6917873303492266709">Ak sa chcete pripojiť k skupinám kariet, zdieľať ich a spolupracovať na nich, otvorte nastavenia a zapnite Povoliť prihlásenie do Chromu</translation> <translation id="6918677045355889289">Vyžaduje sa aktualizácia systému Chrome OS</translation> <translation id="6918733588290914545">Rýchle nastavenie pomocou telefónu s Androidom</translation> @@ -10686,6 +10690,7 @@ <translation id="8625124982056504555">Čítať sériové čísla zariadení ChromeOS a komponentov</translation> <translation id="862542460444371744">&Rozšírenia</translation> <translation id="8625663000550647058">Nemôže používať váš mikrofón</translation> +<translation id="8625679025395572221">Váš účet môže byť stále ohrozený.</translation> <translation id="8625916342247441948">Nepovoliť webom pripájať sa k zariadeniam HID</translation> <translation id="862727964348362408">Pozastavené</translation> <translation id="862750493060684461">Vyrovnávacia pamäť CSS</translation>
diff --git a/chrome/app/resources/generated_resources_sl.xtb b/chrome/app/resources/generated_resources_sl.xtb index e1e7844..c1f6d3fd2 100644 --- a/chrome/app/resources/generated_resources_sl.xtb +++ b/chrome/app/resources/generated_resources_sl.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Otrok lahko s kodo PIN odklene napravo.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">Slovarja za preverjanje črkovanja za jezik <ph name="LANGUAGE" /> ni bilo mogoče prenesti. Poskusite znova.</translation> +<translation id="1078029726086090536">Preverite geslo</translation> <translation id="1078037449555275327">Nastavitve ChromeVoxa</translation> <translation id="1079242569060319448">Ste pozabili kodo PIN?</translation> <translation id="1079285777677001938">Funkcije na nekaterih spletnih mestih morda ne bodo delovale.</translation> @@ -1437,7 +1438,6 @@ <translation id="1980168597243156">Vesoljska postaja</translation> <translation id="1981434377190976112">Branje vseh vaših podatkov na vseh spletnih mestih</translation> <translation id="1982851102516626421">Odjavljeni ste</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} in {field_2}}one{{field_1}, {field_2} in {field_3}}two{{field_1}, {field_2} in {field_3}}few{{field_1}, {field_2} in {field_3}}other{{field_1}, {field_2} in {field_3}}}</translation> <translation id="1984417487208496350">Brez zaščite (ni priporočljivo)</translation> <translation id="198507684520034826">Pomoč</translation> <translation id="1986836014090708999">Dodatne nastavitve lokacije</translation> @@ -4097,6 +4097,7 @@ <translation id="3848547754896969219">Odpiranje v &anonimnem oknu</translation> <translation id="3850172593216628215">Varnostne posodobitve so končane. Prihranite 50 USD ali več pri novem Chromebooku.</translation> <translation id="385051799172605136">Nazaj</translation> +<translation id="3850989673553106152">Geslo je spremenjeno</translation> <translation id="3851428669031642514">Naloži skripte, ki niso varni</translation> <translation id="3852215160863921508">Pomoč pri vnosu</translation> <translation id="3853549894831560772">Naprava <ph name="DEVICE_NAME" /> je vklopljena</translation> @@ -4599,6 +4600,7 @@ <translation id="421182450098841253">&Pokaži vrstico z zaznamki</translation> <translation id="4211904048067111541">Prenehaj uporabljati z aplikacijami za Android</translation> <translation id="42126664696688958">Izvozi</translation> +<translation id="4213540068152645535">Težave pri spreminjanju gesla</translation> <translation id="42137655013211669">Strežnik je onemogočil dostop do tega vira.</translation> <translation id="4213918571089943508">Otrokov račun Google</translation> <translation id="4214192212360095377">Izklopi</translation> @@ -4945,7 +4947,6 @@ <translation id="4462159676511157176">Imenski strežniki po meri</translation> <translation id="4465236939126352372">Za aplikacijo <ph name="APP_NAME" /> je nastavljena omejitev <ph name="TIME" /></translation> <translation id="4467373268340082204">Napačna koda PIN</translation> -<translation id="4467561276409486506">Preklopi v strnjeni način</translation> <translation id="4469324811108161144">Zapiski lahko shranijo do toliko znakov: <ph name="CHARACTER_LIMIT" />.</translation> <translation id="4469762931504673593">Spletno mesto <ph name="ORIGIN" /> lahko ureja datoteke v mapi <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Nastavitve zunanjih naprav za shranjevanje</translation> @@ -8329,6 +8330,7 @@ <translation id="6913051485529944333">Google Koledar na tej strani ne bo več prikazan</translation> <translation id="6914812290245989348">Brez prikaza opozoril pred odpiranjem spletnih mest, ki niso varna</translation> <translation id="6916590542764765824">Upravljanje razširitev</translation> +<translation id="6916676294509106572">Koledar v Outlooku je skrit</translation> <translation id="6917873303492266709">Če želite deliti, se pridružiti in sodelovati v skupinah zavihkov, odprite nastavitve in vklopite »Omogoči prijavo v Chrome«</translation> <translation id="6918677045355889289">Potrebna je posodobitev sistema Chrome OS</translation> <translation id="6918733588290914545">Hitra nastavitev s telefonom Android</translation> @@ -10709,6 +10711,7 @@ <translation id="8625124982056504555">Branje serijskih številk naprav in komponent s sistemom ChromeOS.</translation> <translation id="862542460444371744">&Razširitve</translation> <translation id="8625663000550647058">Ni dovoljena uporaba mikrofona</translation> +<translation id="8625679025395572221">Vaš račun je morda še vedno ogrožen.</translation> <translation id="8625916342247441948">Spletnim mestom ni dovoljeno povezovanje z napravami HID.</translation> <translation id="862727964348362408">Onemogočeno</translation> <translation id="862750493060684461">Predpomnilnik CSS</translation>
diff --git a/chrome/app/resources/generated_resources_sq.xtb b/chrome/app/resources/generated_resources_sq.xtb index f9fe5a7..beba895 100644 --- a/chrome/app/resources/generated_resources_sq.xtb +++ b/chrome/app/resources/generated_resources_sq.xtb
@@ -1421,7 +1421,6 @@ <translation id="1980168597243156">Stacion hapësinor</translation> <translation id="1981434377190976112">Lexo të gjitha të dhënat e tua në të gjitha uebsajtet</translation> <translation id="1982851102516626421">Ke dalë</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} dhe {field_2}}other{{field_1}, {field_2} dhe {field_3}}}</translation> <translation id="1984417487208496350">Asnjë mbrojtje (nuk rekomandohet)</translation> <translation id="198507684520034826">Ndihma</translation> <translation id="1986836014090708999">Cilësimet e përparuara të vendndodhjes</translation> @@ -4925,7 +4924,6 @@ <translation id="4462159676511157176">Serverët e personalizuar të emrit</translation> <translation id="4465236939126352372">Kufiri kohor prej <ph name="TIME" /> është caktuar për <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">Kod PIN i gabuar</translation> -<translation id="4467561276409486506">&Aktivizo/çaktivizo modalitetin kompakt</translation> <translation id="4469324811108161144">Shënimet mund të ruajnë deri në <ph name="CHARACTER_LIMIT" /> karaktere.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> mund t'i modifikojë skedarët në <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Preferencat e hapësirës së jashtme ruajtëse</translation>
diff --git a/chrome/app/resources/generated_resources_sr-Latn.xtb b/chrome/app/resources/generated_resources_sr-Latn.xtb index 63eae45..8dc11f6f 100644 --- a/chrome/app/resources/generated_resources_sr-Latn.xtb +++ b/chrome/app/resources/generated_resources_sr-Latn.xtb
@@ -1424,7 +1424,6 @@ <translation id="1980168597243156">Svemirska stanica</translation> <translation id="1981434377190976112">da čita sve vaše podatke na svim veb-sajtovima</translation> <translation id="1982851102516626421">Odjavljeni ste</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} i {field_2}}one{{field_1}, {field_2} i {field_3}}few{{field_1}, {field_2} i {field_3}}other{{field_1}, {field_2} i {field_3}}}</translation> <translation id="1984417487208496350">Bez zaštite (ne preporučuje se)</translation> <translation id="198507684520034826">Pomoć</translation> <translation id="1986836014090708999">Napredna podešavanja lokacije</translation> @@ -4930,7 +4929,6 @@ <translation id="4462159676511157176">Prilagođeni serveri naziva</translation> <translation id="4465236939126352372">Vremensko ograničenje od <ph name="TIME" /> je podešeno za aplikaciju <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">Pogrešan PIN</translation> -<translation id="4467561276409486506">&Uključi/isključi kompaktni režim</translation> <translation id="4469324811108161144">Beleške mogu da sačuvaju najviše <ph name="CHARACTER_LIMIT" /> znakova.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> može da menja datoteke u direktorijumu <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Podešavanja spoljne memorije</translation>
diff --git a/chrome/app/resources/generated_resources_sr.xtb b/chrome/app/resources/generated_resources_sr.xtb index ae07be8..95104cb 100644 --- a/chrome/app/resources/generated_resources_sr.xtb +++ b/chrome/app/resources/generated_resources_sr.xtb
@@ -1424,7 +1424,6 @@ <translation id="1980168597243156">Свемирска станица</translation> <translation id="1981434377190976112">да чита све ваше податке на свим веб-сајтовима</translation> <translation id="1982851102516626421">Одјављени сте</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} и {field_2}}one{{field_1}, {field_2} и {field_3}}few{{field_1}, {field_2} и {field_3}}other{{field_1}, {field_2} и {field_3}}}</translation> <translation id="1984417487208496350">Без заштите (не препоручује се)</translation> <translation id="198507684520034826">Помоћ</translation> <translation id="1986836014090708999">Напредна подешавања локације</translation> @@ -4930,7 +4929,6 @@ <translation id="4462159676511157176">Прилагођени сервери назива</translation> <translation id="4465236939126352372">Временско ограничење од <ph name="TIME" /> је подешено за апликацију <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">Погрешан PIN</translation> -<translation id="4467561276409486506">&Укључи/искључи компактни режим</translation> <translation id="4469324811108161144">Белешке могу да сачувају највише <ph name="CHARACTER_LIMIT" /> знакова.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> може да мења датотеке у директоријуму <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Подешавања спољне меморије</translation>
diff --git a/chrome/app/resources/generated_resources_sv.xtb b/chrome/app/resources/generated_resources_sv.xtb index e72a420..b725e8c 100644 --- a/chrome/app/resources/generated_resources_sv.xtb +++ b/chrome/app/resources/generated_resources_sv.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Ditt barn kan låsa upp enheten med en pinkod.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">Det gick inte att ladda ned ordlistan för stavningskontroll på <ph name="LANGUAGE" />. Försök igen.</translation> +<translation id="1078029726086090536">Verifiera ditt lösenord</translation> <translation id="1078037449555275327">Inställningar för ChromeVox</translation> <translation id="1079242569060319448">Har du glömt pinkoden?</translation> <translation id="1079285777677001938">Vissa webbplatsers funktioner kanske inte fungerar.</translation> @@ -1434,7 +1435,6 @@ <translation id="1980168597243156">Rymdstation</translation> <translation id="1981434377190976112">Läsa all din data på alla webbplatser</translation> <translation id="1982851102516626421">Du är utloggad</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} och {field_2}}other{{field_1}, {field_2} och {field_3}}}</translation> <translation id="1984417487208496350">Inget skydd (rekommenderas inte)</translation> <translation id="198507684520034826">Hjälp</translation> <translation id="1986836014090708999">Avancerade platsinställningar</translation> @@ -4094,6 +4094,7 @@ <translation id="3848547754896969219">Öppna i ett &inkognitofönster</translation> <translation id="3850172593216628215">Säkerhetsuppdateringar har upphört. Spara minst 50 USD på en ny Chromebook.</translation> <translation id="385051799172605136">Föregående</translation> +<translation id="3850989673553106152">Lösenordet har ändrats</translation> <translation id="3851428669031642514">Läs in osäkra skript</translation> <translation id="3852215160863921508">Inmatningshjälp</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" /> är aktiverad</translation> @@ -4596,6 +4597,7 @@ <translation id="421182450098841253">&Visa bokmärkesfältet</translation> <translation id="4211904048067111541">Sluta använda kontot i Android-appar</translation> <translation id="42126664696688958">Exportera</translation> +<translation id="4213540068152645535">Problem med att ändra lösenordet</translation> <translation id="42137655013211669">Åtkomsten till den här resursen blockerades av servern.</translation> <translation id="4213918571089943508">Barnets Google-konto</translation> <translation id="4214192212360095377">Inaktivera nu</translation> @@ -4942,7 +4944,6 @@ <translation id="4462159676511157176">Anpassade namnservrar</translation> <translation id="4465236939126352372">En tidsgräns på <ph name="TIME" /> har ställts in för <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">Fel pinkod</translation> -<translation id="4467561276409486506">Aktivera/inaktivera kompakt läge</translation> <translation id="4469324811108161144">Ledtrådar kan innehålla upp till <ph name="CHARACTER_LIMIT" /> tecken.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> har redigeringsbehörighet för <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Inställningar för extern lagring</translation> @@ -8318,6 +8319,7 @@ <translation id="6913051485529944333">Du kommer inte att se Google Kalender på den här sidan igen</translation> <translation id="6914812290245989348">Visa inga varningar innan du besöker osäkra webbplatser</translation> <translation id="6916590542764765824">Hantera tillägg</translation> +<translation id="6916676294509106572">Kalendern i Outlook har dolts</translation> <translation id="6917873303492266709">Om du vill dela, gå med i och samarbeta i flikgrupper öppnar du inställningarna och aktiverar Tillåt inloggning i Chrome</translation> <translation id="6918677045355889289">Uppdatering av ChromeOS krävs</translation> <translation id="6918733588290914545">Snabb konfigurering med Android-telefon</translation> @@ -10698,6 +10700,7 @@ <translation id="8625124982056504555">Läsa serienummer för ChromeOS-enheter och komponenter</translation> <translation id="862542460444371744">&Tillägg</translation> <translation id="8625663000550647058">Får inte använda mikrofonen</translation> +<translation id="8625679025395572221">Ditt konto kanske inte är säkert.</translation> <translation id="8625916342247441948">Tillåt inte att webbplatser ansluter till HID-enheter</translation> <translation id="862727964348362408">Tillfälligt avstängd</translation> <translation id="862750493060684461">CSS-cacheminne</translation>
diff --git a/chrome/app/resources/generated_resources_sw.xtb b/chrome/app/resources/generated_resources_sw.xtb index 8d1690b1..4e8be3b 100644 --- a/chrome/app/resources/generated_resources_sw.xtb +++ b/chrome/app/resources/generated_resources_sw.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Mtoto wako anaweza kutumia PIN kufungua kifaa.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">Imeshindwa kupakua kamusi ya kukagua maendelezo ya <ph name="LANGUAGE" />. Jaribu tena.</translation> +<translation id="1078029726086090536">Thibitisha nenosiri lako</translation> <translation id="1078037449555275327">Mipangilio ya ChromeVox</translation> <translation id="1079242569060319448">Je, umesahau PIN?</translation> <translation id="1079285777677001938">Huenda vipengele visifanye kazi kwenye baadhi ya tovuti.</translation> @@ -1430,7 +1431,6 @@ <translation id="1980168597243156">Kituo cha angani</translation> <translation id="1981434377190976112">Kusoma data yako yote kwenye tovuti zote</translation> <translation id="1982851102516626421">Umeondoka kwenye akaunti</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} na {field_2}}other{{field_1}, {field_2} na {field_3}}}</translation> <translation id="1984417487208496350">Hamna ulinzi (haipendekezwi)</translation> <translation id="198507684520034826">Usaidizi</translation> <translation id="1986836014090708999">Mipangilio ya kina ya mahali</translation> @@ -4091,6 +4091,7 @@ <translation id="3848547754896969219">Fungua katika &dirisha fiche</translation> <translation id="3850172593216628215">Muda wa masasisho ya usalama umeisha. Okoa $50 au zaidi kwenye Chromebook mpya.</translation> <translation id="385051799172605136">Rudi nyuma</translation> +<translation id="3850989673553106152">Nenosiri limebadilishwa</translation> <translation id="3851428669031642514">Pakia hati zisizo salama</translation> <translation id="3852215160863921508">Usaidizi wa Kuingiza Data</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" /> imewashwa</translation> @@ -4591,6 +4592,7 @@ <translation id="421182450098841253">&Onyesha Upau wa Alamisho</translation> <translation id="4211904048067111541">Acha kutumia kwenye programu za Android</translation> <translation id="42126664696688958">Hamisha</translation> +<translation id="4213540068152645535">Tatizo limetokea wakati wa kubadilisha nenosiri lako</translation> <translation id="42137655013211669">Idhini ya kufikia rasilimali hii ilizuiwa na seva.</translation> <translation id="4213918571089943508">Akaunti ya Google ya Mtoto</translation> <translation id="4214192212360095377">Zima Sasa</translation> @@ -4937,7 +4939,6 @@ <translation id="4462159676511157176">Seva za jina maalum</translation> <translation id="4465236939126352372">Umeweka kikomo cha <ph name="TIME" /> cha kutumia <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">PIN si sahihi</translation> -<translation id="4467561276409486506">Geuza Hali ya Kushikamana</translation> <translation id="4469324811108161144">Vidokezo vinaweza kuhifadhi hadi herufi <ph name="CHARACTER_LIMIT" />.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> inaweza kubadilisha faili katika <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Mapendeleo ya hifadhi ya nje</translation> @@ -8313,6 +8314,7 @@ <translation id="6913051485529944333">Hutaona Kalenda ya Google kwenye ukurasa huu tena</translation> <translation id="6914812290245989348">Usione tahadhari zozote kabla ya kwenda kwenye tovuti zisizo salama</translation> <translation id="6916590542764765824">Simamia Viendelezi</translation> +<translation id="6916676294509106572">Kalenda ya Outlook imefichwa</translation> <translation id="6917873303492266709">Fungua mipangilio na uwashe ‘Ruhusu kuingia katika akaunti ukitumia Chrome’ ili uruhusu ufikiaji, ujiunge na ushirikiane katika vikundi vya vichupo</translation> <translation id="6918677045355889289">Unahitaji kusasisha Mfumo wa Uendeshaji wa Chrome</translation> <translation id="6918733588290914545">Weka mipangilio ya haraka ukitumia simu ya Android</translation> @@ -10694,6 +10696,7 @@ <translation id="8625124982056504555">Kusoma namba za ufuatiliaji za kifaa na vipengele vinavyotumia Mfumo wa Uendeshaji wa Chrome</translation> <translation id="862542460444371744">Vi&endelezi</translation> <translation id="8625663000550647058">Zisizoruhusiwa kutumia maikrofoni yako</translation> +<translation id="8625679025395572221">Huenda akaunti yako bado iko hatarini.</translation> <translation id="8625916342247441948">Usiruhusu tovuti ziunganishe kwenye vifaa vya HID</translation> <translation id="862727964348362408">Imesitishwa</translation> <translation id="862750493060684461">Akiba ya CSS</translation>
diff --git a/chrome/app/resources/generated_resources_ta.xtb b/chrome/app/resources/generated_resources_ta.xtb index 699dd5d2..32d5b15 100644 --- a/chrome/app/resources/generated_resources_ta.xtb +++ b/chrome/app/resources/generated_resources_ta.xtb
@@ -1434,7 +1434,6 @@ <translation id="1980168597243156">விண்வெளி நிலையம்</translation> <translation id="1981434377190976112">எல்லா இணையதளங்களிலும் உள்ள உங்கள் தரவைப் படிக்கலாம்</translation> <translation id="1982851102516626421">வெளியேறிவிட்டீர்கள்</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} மற்றும் {field_2}}other{{field_1}, {field_2} மற்றும் {field_3}}}</translation> <translation id="1984417487208496350">பாதுகாப்பற்ற பயன்முறை (பரிந்துரைக்கப்படவில்லை)</translation> <translation id="198507684520034826">உதவி</translation> <translation id="1986836014090708999">மேம்பட்ட இருப்பிட அமைப்புகள்</translation> @@ -4942,7 +4941,6 @@ <translation id="4462159676511157176">பிரத்தியேகப் பெயர் சேவையகங்கள்</translation> <translation id="4465236939126352372"><ph name="APP_NAME" />க்கு அமைக்கப்பட்ட நேர வரம்பு: <ph name="TIME" /></translation> <translation id="4467373268340082204">தவறான பின்</translation> -<translation id="4467561276409486506">சுருக்கப் பயன்முறையை இயக்கு/முடக்கு</translation> <translation id="4469324811108161144">குறிப்புகளில் அதிகபட்சம் <ph name="CHARACTER_LIMIT" /> எழுத்துகள் இருக்கலாம்.</translation> <translation id="4469762931504673593"><ph name="FOLDERNAME" /> ஃபோல்டரில் உள்ள கோப்புகளை <ph name="ORIGIN" /> தளத்தால் திருத்த முடியும்</translation> <translation id="4470957202018033307">வெளிப்புறச் சேமிப்பக விருப்பங்கள்</translation>
diff --git a/chrome/app/resources/generated_resources_te.xtb b/chrome/app/resources/generated_resources_te.xtb index 13e0b85..33fb2e6 100644 --- a/chrome/app/resources/generated_resources_te.xtb +++ b/chrome/app/resources/generated_resources_te.xtb
@@ -1432,7 +1432,6 @@ <translation id="1980168597243156">స్పేస్ స్టేషన్</translation> <translation id="1981434377190976112">అన్ని వెబ్సైట్లలో మీ మొత్తం డేటాను చదవడం</translation> <translation id="1982851102516626421">మీరు సైన్ అవుట్ చేశారు</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1}, {field_2}}other{{field_1}, {field_2}, {field_3}}}</translation> <translation id="1984417487208496350">రక్షణ లేదు (సిఫార్సు చేయడం లేదు)</translation> <translation id="198507684520034826">సహాయం</translation> <translation id="1986836014090708999">అధునాతన లొకేషన్ సెట్టింగ్లు</translation> @@ -4940,7 +4939,6 @@ <translation id="4462159676511157176">అనుకూల పేరు సర్వర్లు</translation> <translation id="4465236939126352372"><ph name="APP_NAME" />కు <ph name="TIME" /> సమయ పరిమితి సెట్ చేయబడింది</translation> <translation id="4467373268340082204">PIN తప్పు</translation> -<translation id="4467561276409486506">&కంపాక్ట్ మోడ్ను టోగుల్ చేయండి</translation> <translation id="4469324811108161144">గమనికలు <ph name="CHARACTER_LIMIT" /> వరకు అక్షరాలను సేవ్ చేయగలవు.</translation> <translation id="4469762931504673593"><ph name="FOLDERNAME" />లోని ఫైళ్లను <ph name="ORIGIN" /> సవరించగలదు</translation> <translation id="4470957202018033307">బాహ్య స్టోరేజ్ ప్రాధాన్యతలు</translation> @@ -6893,7 +6891,7 @@ <translation id="5885314688092915589">మీ సంస్థ ఈ ప్రొఫైల్ని మేనేజ్ చేస్తుంది</translation> <translation id="5885470467814103868">స్కాన్ను ప్రారంభించండి</translation> <translation id="5885631909150054232">టోకెన్ను కాపీ చేయండి</translation> -<translation id="5886009770935151472">1వ వేలు</translation> +<translation id="5886009770935151472">వేలు (ఫింగర్) 1</translation> <translation id="5886112770923972514">సమీపంలోని ఉన్న ఫాస్ట్ పెయిర్ పరికరాలకు త్వరితంగా కనెక్ట్ అయి, వాటిని సెటప్ చేయండి</translation> <translation id="5886384907280980632">ఇప్పుడే ఆఫ్ చేయండి</translation> <translation id="5888889603768021126">దీనితో సైన్ ఇన్ చేశారు</translation>
diff --git a/chrome/app/resources/generated_resources_th.xtb b/chrome/app/resources/generated_resources_th.xtb index 2ca2a38..9e885130 100644 --- a/chrome/app/resources/generated_resources_th.xtb +++ b/chrome/app/resources/generated_resources_th.xtb
@@ -1425,7 +1425,6 @@ <translation id="1980168597243156">สถานีอวกาศ</translation> <translation id="1981434377190976112">อ่านข้อมูลทั้งหมดของคุณในทุกเว็บไซต์</translation> <translation id="1982851102516626421">คุณออกจากระบบแล้ว</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1}และ{field_2}}other{{field_1} {field_2} และ{field_3}}}</translation> <translation id="1984417487208496350">ไม่มีการปกป้อง (ไม่แนะนำ)</translation> <translation id="198507684520034826">วิธีใช้</translation> <translation id="1986836014090708999">การตั้งค่าตำแหน่งขั้นสูง</translation> @@ -4930,7 +4929,6 @@ <translation id="4462159676511157176">เซิร์ฟเวอร์ชื่อที่กำหนดเอง</translation> <translation id="4465236939126352372">จำกัดเวลาการใช้ <ph name="APP_NAME" /> ไว้ที่ <ph name="TIME" /></translation> <translation id="4467373268340082204">PIN ไม่ถูกต้อง</translation> -<translation id="4467561276409486506">เปิด/ปิดโหมดกะทัดรัด</translation> <translation id="4469324811108161144">หมายเหตุบักทึกอักขระได้สูงสุด <ph name="CHARACTER_LIMIT" /> ตัว</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> แก้ไขไฟล์ใน <ph name="FOLDERNAME" /> ได้</translation> <translation id="4470957202018033307">ค่ากำหนดพื้นที่เก็บข้อมูลภายนอก</translation>
diff --git a/chrome/app/resources/generated_resources_tr.xtb b/chrome/app/resources/generated_resources_tr.xtb index 4a22f4d..02e6331 100644 --- a/chrome/app/resources/generated_resources_tr.xtb +++ b/chrome/app/resources/generated_resources_tr.xtb
@@ -1424,7 +1424,6 @@ <translation id="1980168597243156">Uzay istasyonu</translation> <translation id="1981434377190976112">Web sitelerindeki tüm verilerinizi okuma</translation> <translation id="1982851102516626421">Oturumunuz kapalı</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} ve {field_2}}other{{field_1}, {field_2} ve {field_3}}}</translation> <translation id="1984417487208496350">Koruma yok (önerilmez)</translation> <translation id="198507684520034826">Yardım</translation> <translation id="1986836014090708999">Gelişmiş konum ayarları</translation> @@ -4925,7 +4924,6 @@ <translation id="4462159676511157176">Özel ad sunucuları</translation> <translation id="4465236939126352372"><ph name="APP_NAME" /> için <ph name="TIME" /> süreli zaman sınırı ayarla</translation> <translation id="4467373268340082204">Yanlış PIN</translation> -<translation id="4467561276409486506">&En Yüksek Modu'nu aç/kapat</translation> <translation id="4469324811108161144">En fazla <ph name="CHARACTER_LIMIT" /> karakterden oluşan notlar kaydedilebilir.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> sitesi <ph name="FOLDERNAME" /> klasöründeki dosyaları düzenleyebilir</translation> <translation id="4470957202018033307">Harici depolama tercihleri</translation> @@ -7431,6 +7429,7 @@ <translation id="6278776436938569440">Konumu değiştir</translation> <translation id="6280215091796946657">Farklı bir hesapla oturum aç</translation> <translation id="6280912520669706465">ARC</translation> +<translation id="6281218688313242284">&Google Hesabınızı Yönetin</translation> <translation id="6282180787514676874">{COUNT,plural, =1{1 kağıt sınırını aşıyor}other{{COUNT} kağıt sınırını aşıyor}}</translation> <translation id="6282490239556659745"><ph name="EMBEDDED_SITE" /> sitesini, <ph name="SITE" /> sitesinden kaldır</translation> <translation id="6283438600881103103">Oturumunuz şimdi otomatik olarak kapatılacak. @@ -8042,6 +8041,7 @@ <translation id="6745592621698551453">Şimdi güncelle</translation> <translation id="6746124502594467657">Aşağı taşı</translation> <translation id="67465227497040338"><ph name="DOMAIN" /> şifresini göster</translation> +<translation id="6746834324024491643">Şifrelerinizi ve diğer öğelerinizi tüm cihazlarınızda almak için <ph name="EMAIL" /> olarak oturum açın</translation> <translation id="6748980958975836188"><ph name="BEGIN_LINK1" />Google Hizmet Şartları<ph name="END_LINK1" />, <ph name="BEGIN_LINK2" />Chrome ve ChromeOS Ek Hizmet Şartları<ph name="END_LINK2" />'nı okudum ve kabul ediyorum.</translation> <translation id="6749077623962119521">İzinler sıfırlansın mı?</translation> <translation id="6749473226660745022">Fotoğraflar</translation>
diff --git a/chrome/app/resources/generated_resources_uk.xtb b/chrome/app/resources/generated_resources_uk.xtb index 7bfc9e2c7..5754b7c 100644 --- a/chrome/app/resources/generated_resources_uk.xtb +++ b/chrome/app/resources/generated_resources_uk.xtb
@@ -1437,7 +1437,6 @@ <translation id="1980168597243156">Космічна станція</translation> <translation id="1981434377190976112">Читати всі ваші дані на всіх веб-сайтах</translation> <translation id="1982851102516626421">Ви вийшли з облікового запису</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} і {field_2}}one{{field_1}, {field_2} і {field_3}}few{{field_1}, {field_2} і {field_3}}many{{field_1}, {field_2} і {field_3}}other{{field_1}, {field_2} і {field_3}}}</translation> <translation id="1984417487208496350">Захист вимкнено (не рекомендовано)</translation> <translation id="198507684520034826">Довідка</translation> <translation id="1986836014090708999">Додаткові налаштування місцеположення</translation> @@ -4945,7 +4944,6 @@ <translation id="4462159676511157176">Сторонні сервери імен</translation> <translation id="4465236939126352372">Для додатка <ph name="APP_NAME" /> налаштовано ліміт часу (<ph name="TIME" />)</translation> <translation id="4467373268340082204">Неправильний PIN-код</translation> -<translation id="4467561276409486506">&Увімкнути або вимкнути компактний режим</translation> <translation id="4469324811108161144">Нотатки можуть містити щонайбільше стільки символів: <ph name="CHARACTER_LIMIT" />.</translation> <translation id="4469762931504673593">Сайт <ph name="ORIGIN" /> може змінювати файли в папці "<ph name="FOLDERNAME" />"</translation> <translation id="4470957202018033307">Параметри зовнішньої пам'яті</translation>
diff --git a/chrome/app/resources/generated_resources_ur.xtb b/chrome/app/resources/generated_resources_ur.xtb index 70c838e..18b3251 100644 --- a/chrome/app/resources/generated_resources_ur.xtb +++ b/chrome/app/resources/generated_resources_ur.xtb
@@ -1424,7 +1424,6 @@ <translation id="1980168597243156">اسپیس اسٹیشن</translation> <translation id="1981434377190976112">سبھی ویب سائٹس پر اپنا سبھی ڈیٹا پڑھیں</translation> <translation id="1982851102516626421">آپ سائن آؤٹ ہیں</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} اور {field_2}}other{{field_1}، {field_2} اور {field_3}}}</translation> <translation id="1984417487208496350">کوئی تحفظ نہیں (تجویز نہیں کی جاتی ہے)</translation> <translation id="198507684520034826">مدد</translation> <translation id="1986836014090708999">جدید ترین مقام کی ترتیبات</translation> @@ -4929,7 +4928,6 @@ <translation id="4462159676511157176">حسب ضرورت نام سرورز</translation> <translation id="4465236939126352372"><ph name="APP_NAME" /> کیلئے <ph name="TIME" /> وقت کی حد سیٹ ہے</translation> <translation id="4467373268340082204">غلط PIN</translation> -<translation id="4467561276409486506">مختصر وضع کو ٹوگل کریں</translation> <translation id="4469324811108161144">نوٹس میں <ph name="CHARACTER_LIMIT" /> حروف تک محفوظ ہو سکتے ہیں۔</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> <ph name="FOLDERNAME" /> میں فائلز میں ترمیم کر سکتا ہے</translation> <translation id="4470957202018033307">خارجی اسٹوریج کی ترجیحات</translation>
diff --git a/chrome/app/resources/generated_resources_uz.xtb b/chrome/app/resources/generated_resources_uz.xtb index 9efc2e5e4..851f0a0a 100644 --- a/chrome/app/resources/generated_resources_uz.xtb +++ b/chrome/app/resources/generated_resources_uz.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">Farzandingiz PIN kod yordamida qurilma qulfini ochishi mumkin.</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216"><ph name="LANGUAGE" /> tili uchun imloni tekshirish lugʻati yuklab olinmadi Qayta urining.</translation> +<translation id="1078029726086090536">Parolingizni tasdiqlang</translation> <translation id="1078037449555275327">ChromeVox sozlamalari</translation> <translation id="1079242569060319448">PIN kodni unutdingizmi?</translation> <translation id="1079285777677001938">Ayrim saytlardagi funksiyalar ishlamay qolishi mumkin.</translation> @@ -1423,7 +1424,6 @@ <translation id="1980168597243156">Kosmik stansiya</translation> <translation id="1981434377190976112">Barcha saytlardagi maʼlumotlaringizni oʻqish</translation> <translation id="1982851102516626421">Hisobdan chiqqansiz</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} va {field_2}}other{{field_1}, {field_2} va {field_3}}}</translation> <translation id="1984417487208496350">Himoyasiz (tavsiya etilmaydi)</translation> <translation id="198507684520034826">Yordam</translation> <translation id="1986836014090708999">Qoʻshimcha joylashuv sozlamalari</translation> @@ -4081,6 +4081,7 @@ <translation id="3848547754896969219">&Inkognito oynasida ochish</translation> <translation id="3850172593216628215">Xavfsizlik yangilanishlari tugadi. Yangi Chromebook xaridi uchun kamida 50$ chegirma oling.</translation> <translation id="385051799172605136">Orqaga</translation> +<translation id="3850989673553106152">Parol oʻzgardi</translation> <translation id="3851428669031642514">Havfsiz bo‘lmagan skriptlarni yuklash</translation> <translation id="3852215160863921508">Matn kiritishda yordam</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" /> yoqildi</translation> @@ -4583,6 +4584,7 @@ <translation id="421182450098841253">&Xatcho‘plar panelini ko‘rsatish</translation> <translation id="4211904048067111541">Android ilovlaridan foydalanishni toʻxatish</translation> <translation id="42126664696688958">Eksport</translation> +<translation id="4213540068152645535">Parolni almashtirishda muammo yuz berdi</translation> <translation id="42137655013211669">Server bu manbaga kirishga ruxsat bermagan.</translation> <translation id="4213918571089943508">Bolaning Google hisobi</translation> <translation id="4214192212360095377">Hozircha faolsizlantirish</translation> @@ -4929,7 +4931,6 @@ <translation id="4462159676511157176">Boshqa nom serverlari</translation> <translation id="4465236939126352372"><ph name="APP_NAME" /> uchun <ph name="TIME" /> cheklov oʻrnatildi</translation> <translation id="4467373268340082204">PIN kod xato</translation> -<translation id="4467561276409486506">Ixcham rejim tugmasi</translation> <translation id="4469324811108161144">Eslatmalar <ph name="CHARACTER_LIMIT" /> ta belgidan oshmasin.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> sayti <ph name="FOLDERNAME" /> jildidagi fayllarni tahrirlay oladi</translation> <translation id="4470957202018033307">Tashqi xotira parametrlari</translation> @@ -8304,6 +8305,7 @@ <translation id="6913051485529944333">Endi bu sahifada Google Taqvim chiqmaydi</translation> <translation id="6914812290245989348">Xavfsiz saytlarga kirish haqida ogohlantirishlar koʻrsatilmasin</translation> <translation id="6916590542764765824">Kengaytmalarni boshqarish</translation> +<translation id="6916676294509106572">Outlook Taqvim berkitildi</translation> <translation id="6917873303492266709">Varaqlar guruhini ulashish, ularga qoʻshilish hamda boshqalar bilan birga ishlash uchun sozlamalarni oching va “Chrome hisobiga kirishga ruxsat berish” bandini yoqing</translation> <translation id="6918677045355889289">ChromeOS tizimini yangilash zarur</translation> <translation id="6918733588290914545">Android telefoni orqali tezkor sozlash</translation> @@ -10681,6 +10683,7 @@ <translation id="8625124982056504555">ChromeOS qurilmasi va komponenti seriya raqamlarini oʻqish</translation> <translation id="862542460444371744">&Kengaytmalar</translation> <translation id="8625663000550647058">Mikrofondan foydalanish taqiqlangan</translation> +<translation id="8625679025395572221">Hisobingiz hali ham xavf ostida boʻlishi mumkin</translation> <translation id="8625916342247441948">Saytlarga HID qurilmalarga ulanishni taqiqlash</translation> <translation id="862727964348362408">To‘xtatib qo‘yildi</translation> <translation id="862750493060684461">CSS kesh</translation>
diff --git a/chrome/app/resources/generated_resources_vi.xtb b/chrome/app/resources/generated_resources_vi.xtb index c240469a..ae5bb035 100644 --- a/chrome/app/resources/generated_resources_vi.xtb +++ b/chrome/app/resources/generated_resources_vi.xtb
@@ -1434,7 +1434,6 @@ <translation id="1980168597243156">Trạm vũ trụ</translation> <translation id="1981434377190976112">Đọc tất cả dữ liệu của bạn trên mọi trang web</translation> <translation id="1982851102516626421">Bạn đã đăng xuất</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1} và {field_2}}other{{field_1}, {field_2} và {field_3}}}</translation> <translation id="1984417487208496350">Không được bảo vệ (không khuyến nghị)</translation> <translation id="198507684520034826">Trợ giúp</translation> <translation id="1986836014090708999">Cài đặt vị trí nâng cao</translation> @@ -4942,7 +4941,6 @@ <translation id="4462159676511157176">Máy chủ định danh tuỳ chỉnh</translation> <translation id="4465236939126352372">Giới hạn thời gian sử dụng <ph name="TIME" /> đã được đặt cho <ph name="APP_NAME" /></translation> <translation id="4467373268340082204">Mã PIN không đúng</translation> -<translation id="4467561276409486506">&Bật/tắt chế độ thu gọn</translation> <translation id="4469324811108161144">Ghi chú có thể lưu tối đa <ph name="CHARACTER_LIMIT" /> ký tự.</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> có thể chỉnh sửa tệp trong <ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Tùy chọn bộ nhớ bên ngoài</translation> @@ -7448,6 +7446,7 @@ <translation id="6278776436938569440">Thay đổi vị trí</translation> <translation id="6280215091796946657">Đăng nhập bằng tài khoản khác</translation> <translation id="6280912520669706465">ARC</translation> +<translation id="6281218688313242284">Quản lý &Tài khoản Google của bạn</translation> <translation id="6282180787514676874">{COUNT,plural, =1{Vượt quá giới hạn 1 tờ giấy}other{Vượt quá giới hạn {COUNT} tờ giấy}}</translation> <translation id="6282490239556659745">Xoá <ph name="EMBEDDED_SITE" /> khỏi <ph name="SITE" /></translation> <translation id="6283438600881103103">Bạn sẽ tự động đăng xuất ngay bây giờ. @@ -8059,6 +8058,7 @@ <translation id="6745592621698551453">Cập nhật ngay bây giờ</translation> <translation id="6746124502594467657">Di chuyển xuống</translation> <translation id="67465227497040338">Hiện mật khẩu của <ph name="DOMAIN" /></translation> +<translation id="6746834324024491643">Để sử dụng mật khẩu và các dữ liệu khác trên mọi thiết bị của bạn, hãy đăng nhập bằng tài khoản <ph name="EMAIL" /></translation> <translation id="6748980958975836188">Tôi đã đọc và đồng ý với <ph name="BEGIN_LINK1" />Điều khoản dịch vụ của Google<ph name="END_LINK1" />, <ph name="BEGIN_LINK2" />Điều khoản dịch vụ bổ sung của Google Chrome và Chrome OS<ph name="END_LINK2" />.</translation> <translation id="6749077623962119521">Đặt lại quyền?</translation> <translation id="6749473226660745022">Ảnh</translation>
diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb index b01788c..82e43d6 100644 --- a/chrome/app/resources/generated_resources_zh-CN.xtb +++ b/chrome/app/resources/generated_resources_zh-CN.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">您的孩子可以使用 PIN 码解锁此设备。</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">无法下载<ph name="LANGUAGE" />拼写检查字典。请重试。</translation> +<translation id="1078029726086090536">验证密码</translation> <translation id="1078037449555275327">ChromeVox 设置</translation> <translation id="1079242569060319448">忘记了 PIN 码?</translation> <translation id="1079285777677001938">某些网站上的功能可能会无法正常运行。</translation> @@ -1417,7 +1418,6 @@ <translation id="1980168597243156">空间站</translation> <translation id="1981434377190976112">读取您在所有网站上的数据</translation> <translation id="1982851102516626421">您已退出账号</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1}和{field_2}}other{{field_1}、{field_2}和{field_3}}}</translation> <translation id="1984417487208496350">不保护(不建议)</translation> <translation id="198507684520034826">帮助</translation> <translation id="1986836014090708999">高级位置信息设置</translation> @@ -4071,6 +4071,7 @@ <translation id="3848547754896969219">在无痕式窗口中打开(&I)</translation> <translation id="3850172593216628215">安全更新已终止。升级为新款 Chromebook 至少可节省 50 美元。</translation> <translation id="385051799172605136">返回</translation> +<translation id="3850989673553106152">密码已更改</translation> <translation id="3851428669031642514">加载不安全的脚本</translation> <translation id="3852215160863921508">输入帮助</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" />已开启</translation> @@ -4572,6 +4573,7 @@ <translation id="421182450098841253">显示书签栏(&S)</translation> <translation id="4211904048067111541">停止使用此账号登录 Android 应用</translation> <translation id="42126664696688958">导出</translation> +<translation id="4213540068152645535">更改密码时遇到问题</translation> <translation id="42137655013211669">服务器禁止访问此资源。</translation> <translation id="4213918571089943508">孩子的 Google 账号</translation> <translation id="4214192212360095377">立即关闭</translation> @@ -4918,7 +4920,6 @@ <translation id="4462159676511157176">自定义域名服务器</translation> <translation id="4465236939126352372">为“<ph name="APP_NAME" />”设置了 <ph name="TIME" />的使用时限</translation> <translation id="4467373268340082204">PIN 码错误</translation> -<translation id="4467561276409486506">开启/关闭紧凑模式(&T)</translation> <translation id="4469324811108161144">备注最多可以包含 <ph name="CHARACTER_LIMIT" /> 个字符。</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> 可修改“<ph name="FOLDERNAME" />”内的文件</translation> <translation id="4470957202018033307">外部存储偏好设置</translation> @@ -8289,6 +8290,7 @@ <translation id="6913051485529944333">此页面不会再显示 Google 日历</translation> <translation id="6914812290245989348">在您访问不安全的网站前不发出任何警告</translation> <translation id="6916590542764765824">管理扩展程序</translation> +<translation id="6916676294509106572">Outlook 日历已隐藏</translation> <translation id="6917873303492266709">如需分享、加入标签页分组并在其中协作,请打开“设置”并开启“允许登录 Chrome”</translation> <translation id="6918677045355889289">需要更新 Chrome 操作系统</translation> <translation id="6918733588290914545">使用 Android 手机快速设置</translation> @@ -10669,6 +10671,7 @@ <translation id="8625124982056504555">读取 ChromeOS 设备序列号和组件序列号</translation> <translation id="862542460444371744">扩展程序(&E)</translation> <translation id="8625663000550647058">不允许使用您的麦克风</translation> +<translation id="8625679025395572221">您的账号可能仍处于危险状态。</translation> <translation id="8625916342247441948">不允许网站连接到 HID 设备</translation> <translation id="862727964348362408">已暂停</translation> <translation id="862750493060684461">CSS 缓存</translation>
diff --git a/chrome/app/resources/generated_resources_zh-HK.xtb b/chrome/app/resources/generated_resources_zh-HK.xtb index 5e68bdc7..476679b 100644 --- a/chrome/app/resources/generated_resources_zh-HK.xtb +++ b/chrome/app/resources/generated_resources_zh-HK.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">子女可使用 PIN 來解鎖裝置。</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">下載唔到<ph name="LANGUAGE" />嘅拼字檢查字典。請再試一次。</translation> +<translation id="1078029726086090536">檢查密碼</translation> <translation id="1078037449555275327">ChromeVox 設定</translation> <translation id="1079242569060319448">忘記 PIN 嗎?</translation> <translation id="1079285777677001938">部分網站的功能可能會無法正常運作。</translation> @@ -1434,7 +1435,6 @@ <translation id="1980168597243156">太空站</translation> <translation id="1981434377190976112">讀取您在所有網站上的所有資料</translation> <translation id="1982851102516626421">你已登出</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1}和{field_2}}other{{field_1}、{field_2}和{field_3}}}</translation> <translation id="1984417487208496350">無保護功能 (不建議)</translation> <translation id="198507684520034826">說明</translation> <translation id="1986836014090708999">進階位置設定</translation> @@ -4089,6 +4089,7 @@ <translation id="3848547754896969219">在無痕式視窗中開啟書籤(&I)</translation> <translation id="3850172593216628215">安全更新已終止,購買新 Chromebook 可節省 $50 美元或以上。</translation> <translation id="385051799172605136">返回</translation> +<translation id="3850989673553106152">已變更密碼</translation> <translation id="3851428669031642514">載入不安全的指令碼</translation> <translation id="3852215160863921508">輸入協助</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" />已開啟</translation> @@ -4586,6 +4587,7 @@ <translation id="421182450098841253">顯示書籤列(&S)</translation> <translation id="4211904048067111541">停止使用此帳戶登入 Android 應用程式</translation> <translation id="42126664696688958">匯出</translation> +<translation id="4213540068152645535">無法變更密碼</translation> <translation id="42137655013211669">伺服器已禁止存取此資源。</translation> <translation id="4213918571089943508">子女的 Google 帳戶</translation> <translation id="4214192212360095377">立即關閉</translation> @@ -4932,7 +4934,6 @@ <translation id="4462159676511157176">自訂名稱伺服器</translation> <translation id="4465236939126352372">已為「<ph name="APP_NAME" />」設定 <ph name="TIME" />的時間限制</translation> <translation id="4467373268340082204">PIN 錯誤</translation> -<translation id="4467561276409486506">切換最密模式(&T)</translation> <translation id="4469324811108161144">筆記可以儲存最多 <ph name="CHARACTER_LIMIT" /> 個字元。</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> 可編輯「<ph name="FOLDERNAME" />」中的檔案</translation> <translation id="4470957202018033307">外部儲存空間偏好設定</translation> @@ -8303,6 +8304,7 @@ <translation id="6913051485529944333">此頁面不會再顯示「Google 日曆」</translation> <translation id="6914812290245989348">在前往不安全的網站前不要顯示任何警告</translation> <translation id="6916590542764765824">管理擴充功能</translation> +<translation id="6916676294509106572">「Outlook 日曆」已隱藏</translation> <translation id="6917873303492266709">如要分享、加入分頁群組和協作,請前往設定頁面開啟「允許登入 Chrome」</translation> <translation id="6918677045355889289">必須更新 Chrome OS</translation> <translation id="6918733588290914545">透過 Android 手機快速設定</translation> @@ -10682,6 +10684,7 @@ <translation id="8625124982056504555">讀取 ChromeOS 裝置和組件序號</translation> <translation id="862542460444371744">擴充功能(&E)</translation> <translation id="8625663000550647058">不允許使用麥克風</translation> +<translation id="8625679025395572221">你的帳戶可能仍有風險。</translation> <translation id="8625916342247441948">不允許網站連接 HID 裝置</translation> <translation id="862727964348362408">暫停</translation> <translation id="862750493060684461">CSS 快取</translation>
diff --git a/chrome/app/resources/generated_resources_zh-TW.xtb b/chrome/app/resources/generated_resources_zh-TW.xtb index 5e2fcdf..83d4714d 100644 --- a/chrome/app/resources/generated_resources_zh-TW.xtb +++ b/chrome/app/resources/generated_resources_zh-TW.xtb
@@ -124,6 +124,7 @@ <translation id="1076766328672150609">你的孩子可以使用 PIN 碼來解鎖裝置。</translation> <translation id="1076818208934827215">Microsoft Internet Explorer</translation> <translation id="1076882167394279216">無法下載<ph name="LANGUAGE" />的拼字檢查字典,請再試一次。</translation> +<translation id="1078029726086090536">驗證密碼</translation> <translation id="1078037449555275327">ChromeVox 設定</translation> <translation id="1079242569060319448">忘記 PIN 碼?</translation> <translation id="1079285777677001938">某些網站的功能可能無法運作。</translation> @@ -1424,7 +1425,6 @@ <translation id="1980168597243156">太空站</translation> <translation id="1981434377190976112">讀取你在所有網站上的所有資料</translation> <translation id="1982851102516626421">你已登出帳戶</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{{field_1}和{field_2}}other{{field_1}、{field_2}和{field_3}}}</translation> <translation id="1984417487208496350">無防護 (不建議)</translation> <translation id="198507684520034826">輔助說明</translation> <translation id="1986836014090708999">進階位置資訊設定</translation> @@ -4078,6 +4078,7 @@ <translation id="3848547754896969219">在無痕視窗中開啟(&I)</translation> <translation id="3850172593216628215">安全性更新已終止,購買新款 Chromebook 可省下 $50 美元以上</translation> <translation id="385051799172605136">返回</translation> +<translation id="3850989673553106152">密碼已變更</translation> <translation id="3851428669031642514">載入不安全的指令碼</translation> <translation id="3852215160863921508">輸入輔助</translation> <translation id="3853549894831560772"><ph name="DEVICE_NAME" />已開啟</translation> @@ -4579,6 +4580,7 @@ <translation id="421182450098841253">顯示書籤列(&S)</translation> <translation id="4211904048067111541">停止存取 Android 應用程式</translation> <translation id="42126664696688958">匯出</translation> +<translation id="4213540068152645535">無法變更密碼</translation> <translation id="42137655013211669">伺服器禁止存取這個資源。</translation> <translation id="4213918571089943508">子女的 Google 帳戶</translation> <translation id="4214192212360095377">立即關閉</translation> @@ -4925,7 +4927,6 @@ <translation id="4462159676511157176">自訂名稱伺服器</translation> <translation id="4465236939126352372">已為「<ph name="APP_NAME" />」設定 <ph name="TIME" />的時間限制</translation> <translation id="4467373268340082204">PIN 碼錯誤</translation> -<translation id="4467561276409486506">切換精簡模式(&T)</translation> <translation id="4469324811108161144">附註最多可以儲存 <ph name="CHARACTER_LIMIT" /> 個半形字元。</translation> <translation id="4469762931504673593"><ph name="ORIGIN" /> 可以編輯「<ph name="FOLDERNAME" />」中的檔案</translation> <translation id="4470957202018033307">外部儲存空間偏好設定</translation> @@ -8295,6 +8296,7 @@ <translation id="6913051485529944333">這個頁面不會再顯示 Google 日曆</translation> <translation id="6914812290245989348">前往不安全的網站前不顯示任何警告</translation> <translation id="6916590542764765824">管理擴充功能</translation> +<translation id="6916676294509106572">Outlook 行事曆已隱藏</translation> <translation id="6917873303492266709">如要分享、加入分頁群組並在其中協作,請前往設定頁面開啟「允許登入 Chrome」</translation> <translation id="6918677045355889289">需要更新 Chrome OS</translation> <translation id="6918733588290914545">使用 Android 手機快速設定</translation> @@ -10674,6 +10676,7 @@ <translation id="8625124982056504555">讀取 ChromeOS 裝置序號和元件序號</translation> <translation id="862542460444371744">擴充功能(&E)</translation> <translation id="8625663000550647058">不得使用麥克風</translation> +<translation id="8625679025395572221">你的帳戶可能仍面臨風險。</translation> <translation id="8625916342247441948">禁止網站連線至 HID 裝置</translation> <translation id="862727964348362408">已暫停</translation> <translation id="862750493060684461">CSS 快取</translation>
diff --git a/chrome/app/resources/generated_resources_zu.xtb b/chrome/app/resources/generated_resources_zu.xtb index c7ac2df..b3f6a22 100644 --- a/chrome/app/resources/generated_resources_zu.xtb +++ b/chrome/app/resources/generated_resources_zu.xtb
@@ -1433,7 +1433,6 @@ <translation id="1980168597243156">Isiteshi sasemkhathini</translation> <translation id="1981434377190976112">Funda yonke idatha yakho kuwo wonke amawebhusayithi</translation> <translation id="1982851102516626421">Uphume ngemvume</translation> -<translation id="1983074053702805575">{count,plural, =1{{field_1}}=2{I-{field_1} ne-{field_2}}one{I-{field_1}, i-{field_2}, ne-{field_3}}other{I-{field_1}, i-{field_2}, ne-{field_3}}}</translation> <translation id="1984417487208496350">Asikho Isivikelo (akunconywa)</translation> <translation id="198507684520034826">Usizo</translation> <translation id="1986836014090708999">Amasethingi endawo athuthukisiwe</translation> @@ -4942,7 +4941,6 @@ <translation id="4462159676511157176">Amaseva wegama langokwezifiso</translation> <translation id="4465236939126352372"><ph name="TIME" /> umkhawulo wesikhathi esisethelwe i-<ph name="APP_NAME" /></translation> <translation id="4467373268340082204">Iphinikhodi okungeyona</translation> -<translation id="4467561276409486506">Guqula Imodi Ecinene</translation> <translation id="4469324811108161144">Amanothi angalondoloza kuze kufike ezinhlamvini ezingu-<ph name="CHARACTER_LIMIT" />.</translation> <translation id="4469762931504673593">I-<ph name="ORIGIN" /> ingahlela amafayela ku-<ph name="FOLDERNAME" /></translation> <translation id="4470957202018033307">Okuncanyelwayo kwesitoreji sangaphandle</translation>
diff --git a/chrome/app/resources/google_chrome_strings_as.xtb b/chrome/app/resources/google_chrome_strings_as.xtb index e994261b..7c96ea4 100644 --- a/chrome/app/resources/google_chrome_strings_as.xtb +++ b/chrome/app/resources/google_chrome_strings_as.xtb
@@ -392,6 +392,7 @@ <translation id="5953954252731207958">আপুনি শেহতীয়াকৈ চোৱা নাই। Chromeএ <ph name="PERMISSION" /> আঁতৰাইছে</translation> <translation id="5980111191913430208">অজ্ঞাত উৎসৰ এক্সটেনশ্বন, এপ্ আৰু থীমে আপোনাৰ ডিভাইচৰ ক্ষতি কৰিব পাৰে। Chromeএ সেয়া কেৱল <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />ৰ পৰাহে ইনষ্টল কৰিবলৈ চুপাৰিছ কৰে</translation> <translation id="6003112304606738118">ডাউনল’ড হৈ আছে... <ph name="HOURS" /> ঘণ্টা বাকী আছে</translation> +<translation id="6008161919456049856">আপুনি নিজৰ Google একাউণ্টত ছেভ কৰি থোৱা আপোনাৰ পাছৱৰ্ড, পৰিশোধ পদ্ধতি আৰু ঠিকনাসমূহ এই ডিভাইচটোৰ পৰা আঁতৰোৱা হ’ব। সেইসমূহ পুনৰ Chromeত ব্যৱহাৰ কৰিবলৈ, পুনৰ ছাইন ইন কৰক।</translation> <translation id="6014316319780893079"><ph name="BEGIN_LINK" />Chromeৰ সঁজুলি<ph name="END_LINK" />ৰ জৰিয়তে, আপুনি সুৰক্ষিতভাৱে ব্ৰাউজ কৰি নিয়ন্ত্ৰণত থাকিব পাৰে</translation> <translation id="6022659036123304283">আপোনাৰ ডিভাইচত Chromeৰ ছেট আপ কৰক</translation> <translation id="6025087594896450715">Google Chrome <ph name="REMAINING_TIME" />ত ৰিষ্টাৰ্ট হ’ব</translation>
diff --git a/chrome/app/resources/google_chrome_strings_az.xtb b/chrome/app/resources/google_chrome_strings_az.xtb index f527f10a..8823e8b2b 100644 --- a/chrome/app/resources/google_chrome_strings_az.xtb +++ b/chrome/app/resources/google_chrome_strings_az.xtb
@@ -388,6 +388,7 @@ <translation id="5953954252731207958">Bu yaxınlarda daxil olmamısınız. Chrome sildi: <ph name="PERMISSION" /></translation> <translation id="5980111191913430208">Naməlum mənbələrdən olan artırma, tətbiq və temalar cihaza zərər verə bilər. Chrome onları yalnız buradan quraşdırmağı tövsiyə edir: <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /></translation> <translation id="6003112304606738118">Endirilir... <ph name="HOURS" /> saat qalıb</translation> +<translation id="6008161919456049856">Google Hesabınızda saxladığınız parollarınız, ödəniş metodlarınız və ünvanlarınız bu cihazdan silinəcək. Onları Chrome-da yenidən istifadə etmək üçün təkrar daxil olun.</translation> <translation id="6014316319780893079"><ph name="BEGIN_LINK" />Chrome alətləri ilə<ph name="END_LINK" /> təhlükəsiz nəzər sala və nəzarət edə bilərsiniz</translation> <translation id="6022659036123304283">Chrome'u özünüzküləşdirin</translation> <translation id="6025087594896450715">Google Chrome <ph name="REMAINING_TIME" /> sonra yenidən başladılacaq</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bg.xtb b/chrome/app/resources/google_chrome_strings_bg.xtb index 26ddf0f..e73c7cf 100644 --- a/chrome/app/resources/google_chrome_strings_bg.xtb +++ b/chrome/app/resources/google_chrome_strings_bg.xtb
@@ -386,6 +386,7 @@ <translation id="5953954252731207958">Не сте посещавали този сайт наскоро. Chrome премахна разрешението „<ph name="PERMISSION" />“</translation> <translation id="5980111191913430208">Разширения, приложения и теми от неизвестни източници могат да навредят на устройството ви. Chrome препоръчва да инсталирате такива само от <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /></translation> <translation id="6003112304606738118">Изтегля се... Оставащо време: <ph name="HOURS" /> ч</translation> +<translation id="6008161919456049856">Паролите, начините на плащане и адресите, които сте запазили в профила си в Google, ще бъдат премахнати от това устройство. За да ги използвате отново в Chrome, влезте пак в профила си.</translation> <translation id="6014316319780893079">С помощта на <ph name="BEGIN_LINK" />инструментите от Chrome<ph name="END_LINK" /> можете да сърфирате безопасно и да запазите контрол</translation> <translation id="6022659036123304283">Персонализирайте Chrome според вкуса си</translation> <translation id="6025087594896450715">Google Chrome ще се рестартира след <ph name="REMAINING_TIME" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_bn.xtb b/chrome/app/resources/google_chrome_strings_bn.xtb index 59bd743bc..50e5cb8 100644 --- a/chrome/app/resources/google_chrome_strings_bn.xtb +++ b/chrome/app/resources/google_chrome_strings_bn.xtb
@@ -388,6 +388,7 @@ <translation id="5953954252731207958">আপনি সম্প্রতি ভিজিট করেননি। Chrome <ph name="PERMISSION" /> সম্পর্কিত অনুমতি সরিয়ে দিয়েছে</translation> <translation id="5980111191913430208">অজানা সোর্স থেকে এক্সটেনশন, অ্যাপ এবং থিম আপনার ডিভাইসের ক্ষতি করতে পারে। Chrome শুধুমাত্র <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> থেকে সেগুলি ইনস্টল করার সাজেশন দেয়</translation> <translation id="6003112304606738118">ডাউনলোড হচ্ছে... <ph name="HOURS" /> ঘণ্টা বাকি আছে</translation> +<translation id="6008161919456049856">পাসওয়ার্ড, পেমেন্ট পদ্ধতি এবং ঠিকানা যা আপনার Google অ্যাকাউন্টে সেভ করে রেখেছেন সেগুলি এই ডিভাইস থেকে সরিয়ে দেওয়া হবে। Chrome-এ সেগুলি পুনরায় ব্যবহার করতে, আবার সাইন-ইন করুন।</translation> <translation id="6014316319780893079"><ph name="BEGIN_LINK" />Chrome-এর টুল<ph name="END_LINK" /> দিয়ে আপনি নিরাপদে ব্রাউজ ও কন্ট্রোল করতে পারবেন</translation> <translation id="6022659036123304283">Chrome-কে আপনার করে নিন</translation> <translation id="6025087594896450715">Google Chrome <ph name="REMAINING_TIME" />-এর মধ্যে রিস্টার্ট হবে</translation>
diff --git a/chrome/app/resources/google_chrome_strings_bs.xtb b/chrome/app/resources/google_chrome_strings_bs.xtb index d38e063..5eef7f8 100644 --- a/chrome/app/resources/google_chrome_strings_bs.xtb +++ b/chrome/app/resources/google_chrome_strings_bs.xtb
@@ -392,6 +392,7 @@ <translation id="5953954252731207958">Niste je posjetili već neko vrijeme. Chrome je uklonio odobrenje "<ph name="PERMISSION" />"</translation> <translation id="5980111191913430208">Ekstenzije, aplikacije i teme iz nepoznatih izvora mogu naštetiti uređaju. Chrome preporučuje da ih instalirate samo iz trgovine <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /></translation> <translation id="6003112304606738118">Preuzimanje… Preostalo je <ph name="HOURS" /> h</translation> +<translation id="6008161919456049856">Lozinke, načini plaćanja i adrese koje ste sačuvali na Google računu će se ukloniti s uređaja. Da ih ponovo koristite u Chromeu, prijavite se ponovo.</translation> <translation id="6014316319780893079">Pomoću <ph name="BEGIN_LINK" />Chromeovih alata<ph name="END_LINK" /> možete pregledati sigurno i zadržati kontrolu</translation> <translation id="6022659036123304283">Prilagodite Chrome svojim potrebama</translation> <translation id="6025087594896450715">Google Chrome će se ponovo pokrenuti za <ph name="REMAINING_TIME" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_cy.xtb b/chrome/app/resources/google_chrome_strings_cy.xtb index 54cd19e..c7add02 100644 --- a/chrome/app/resources/google_chrome_strings_cy.xtb +++ b/chrome/app/resources/google_chrome_strings_cy.xtb
@@ -392,6 +392,7 @@ <translation id="5953954252731207958">Nid ydych wedi ymweld yn ddiweddar. Mae Chrome wedi tynnu <ph name="PERMISSION" /></translation> <translation id="5980111191913430208">Gall estyniadau, apiau a themâu o ffynonellau anhysbys niweidio'ch dyfais. Mae Chrome yn argymell eu gosod o'r <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> yn unig</translation> <translation id="6003112304606738118">Wrthi'n lawrlwytho... Mae <ph name="HOURS" /> awr ar ôl</translation> +<translation id="6008161919456049856">Bydd eich cyfrineiriau, eich dulliau talu a'ch cyfeiriadau a gadwyd gennych yn eich Cyfrif Google yn cael eu tynnu o'r ddyfais hon. I'w defnyddio eto yn Chrome, mewngofnodwch eto.</translation> <translation id="6014316319780893079">Gydag <ph name="BEGIN_LINK" />offer gan Chrome<ph name="END_LINK" />, gallwch bori'n ddiogel ac aros mewn rheolaeth</translation> <translation id="6022659036123304283">Personoleiddio Chrome</translation> <translation id="6025087594896450715">Bydd Google Chrome yn ailddechrau mewn <ph name="REMAINING_TIME" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_da.xtb b/chrome/app/resources/google_chrome_strings_da.xtb index bc25e75..d3bcc51 100644 --- a/chrome/app/resources/google_chrome_strings_da.xtb +++ b/chrome/app/resources/google_chrome_strings_da.xtb
@@ -384,6 +384,7 @@ <translation id="5953954252731207958">Du har ikke besøgt websitet for nylig. Chrome har fjernet <ph name="PERMISSION" /></translation> <translation id="5980111191913430208">Udvidelser, apps og temaer fra ukendte kilder kan skade din enhed. Chrome anbefaler, at de kun installeres via <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /></translation> <translation id="6003112304606738118">Downloader… Der er <ph name="HOURS" /> timer tilbage</translation> +<translation id="6008161919456049856">De adgangskoder, betalingsmetoder og adresser, du har gemt på din Google-konto, fjernes fra denne enhed. Hvis du vil bruge dem igen i Chrome, skal du logge ind igen.</translation> <translation id="6014316319780893079">Med <ph name="BEGIN_LINK" />værktøjer fra Chrome<ph name="END_LINK" /> kan du søge sikkert på nettet og bevare styringen</translation> <translation id="6022659036123304283">Gør Chrome til din egen</translation> <translation id="6025087594896450715">Google Chrome genstarter om <ph name="REMAINING_TIME" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_el.xtb b/chrome/app/resources/google_chrome_strings_el.xtb index 0e54eed..82215d7 100644 --- a/chrome/app/resources/google_chrome_strings_el.xtb +++ b/chrome/app/resources/google_chrome_strings_el.xtb
@@ -388,6 +388,7 @@ <translation id="5953954252731207958">Δεν έχετε επισκεφτεί πρόσφατα τον ιστότοπο. Το Chrome κατάργησε την άδεια <ph name="PERMISSION" /></translation> <translation id="5980111191913430208">Οι επεκτάσεις, οι εφαρμογές και τα θέματα από άγνωστες πηγές μπορούν να βλάψουν τη συσκευή σας. Το Chrome συνιστά την εγκατάστασή τους μόνο από το <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /></translation> <translation id="6003112304606738118">Λήψη… Απομένουν <ph name="HOURS" /> ώρες</translation> +<translation id="6008161919456049856">Οι κωδικοί πρόσβασης, οι τρόποι πληρωμής και οι διευθύνσεις που αποθηκεύσατε στον Λογαριασμό σας Google θα καταργηθούν από αυτή τη συσκευή. Για να τα χρησιμοποιήσετε ξανά στο Chrome, συνδεθείτε ξανά.</translation> <translation id="6014316319780893079">Με τα <ph name="BEGIN_LINK" />εργαλεία του Chrome<ph name="END_LINK" />, μπορείτε να περιηγείστε με ασφάλεια και να διατηρείτε τον έλεγχο</translation> <translation id="6022659036123304283">Προσαρμόστε το Chrome για εσάς</translation> <translation id="6025087594896450715">Θα γίνει επανεκκίνηση του Google Chrome σε <ph name="REMAINING_TIME" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_en-GB.xtb b/chrome/app/resources/google_chrome_strings_en-GB.xtb index 9270991..82290f1 100644 --- a/chrome/app/resources/google_chrome_strings_en-GB.xtb +++ b/chrome/app/resources/google_chrome_strings_en-GB.xtb
@@ -392,6 +392,7 @@ <translation id="5953954252731207958">You haven't visited recently. Chrome removed <ph name="PERMISSION" /></translation> <translation id="5980111191913430208">Extensions, apps and themes from unknown sources can harm your device. Chrome recommends only installing them from the <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /></translation> <translation id="6003112304606738118">Downloading… <ph name="HOURS" /> hour(s) remaining</translation> +<translation id="6008161919456049856">Your passwords, payment methods and addresses that you saved in your Google Account will be removed from this device. To use them again in Chrome, sign back in.</translation> <translation id="6014316319780893079">With <ph name="BEGIN_LINK" />tools from Chrome<ph name="END_LINK" />, you can browse safely and stay in control</translation> <translation id="6022659036123304283">Make Chrome your own</translation> <translation id="6025087594896450715">Google Chrome will restart in <ph name="REMAINING_TIME" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_es.xtb b/chrome/app/resources/google_chrome_strings_es.xtb index d0f4eb7d..783faac17 100644 --- a/chrome/app/resources/google_chrome_strings_es.xtb +++ b/chrome/app/resources/google_chrome_strings_es.xtb
@@ -392,6 +392,7 @@ <translation id="5953954252731207958">No has visitado el sitio recientemente. Chrome ha eliminado <ph name="PERMISSION" />.</translation> <translation id="5980111191913430208">Las extensiones, las aplicaciones y los temas de fuentes desconocidas pueden dañar tu dispositivo. Chrome recomienda instalarlos únicamente desde <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />.</translation> <translation id="6003112304606738118">Descargando... Horas restantes: <ph name="HOURS" />.</translation> +<translation id="6008161919456049856">Las contraseñas, los métodos de pago y las direcciones que hayas guardado en tu cuenta de Google se eliminarán de este dispositivo. Para usarlos de nuevo en Chromium, vuelve a iniciar sesión.</translation> <translation id="6014316319780893079">Las <ph name="BEGIN_LINK" />herramientas de Chrome<ph name="END_LINK" /> te permiten navegar de forma segura y mantener el control</translation> <translation id="6022659036123304283">Personaliza Chrome</translation> <translation id="6025087594896450715">Google Chrome se reiniciará dentro de <ph name="REMAINING_TIME" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_et.xtb b/chrome/app/resources/google_chrome_strings_et.xtb index 164426b..bf5d80e 100644 --- a/chrome/app/resources/google_chrome_strings_et.xtb +++ b/chrome/app/resources/google_chrome_strings_et.xtb
@@ -388,6 +388,7 @@ <translation id="5953954252731207958">Te pole hiljuti külastanud. Chrome eemaldas <ph name="PERMISSION" /></translation> <translation id="5980111191913430208">Tundmatutest allikatest pärinevad laiendused, rakendused ja teemad võivad teie seadet kahjustada. Chrome soovitab need installida ainult järgmisest poest: <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /></translation> <translation id="6003112304606738118">Allalaadimine … <ph name="HOURS" /> tund(i) on jäänud</translation> +<translation id="6008161919456049856">Teie Google'i kontole salvestatud paroolid, makseviisid ja aadressid eemaldatakse sellest seadmest. Selleks et neid Chrome'is uuesti kasutada, logige taas sisse.</translation> <translation id="6014316319780893079"><ph name="BEGIN_LINK" />Chrome'i tööriistadega<ph name="END_LINK" /> saate ohutult sirvida ja kõik kontrolli all hoida</translation> <translation id="6022659036123304283">Isikupärastage Chrome'i</translation> <translation id="6025087594896450715">Google Chrome taaskäivitub <ph name="REMAINING_TIME" /> pärast</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fa.xtb b/chrome/app/resources/google_chrome_strings_fa.xtb index 0ee2da0f..cbdc0f37 100644 --- a/chrome/app/resources/google_chrome_strings_fa.xtb +++ b/chrome/app/resources/google_chrome_strings_fa.xtb
@@ -384,6 +384,7 @@ <translation id="5953954252731207958">اخیراً بازدیدی نداشتهاید. Chrome <ph name="PERMISSION" /> را برداشت</translation> <translation id="5980111191913430208">افزونهها، برنامهها، و زمینههای دریافتی از منابع ناشناخته میتوانند به دستگاهتان آسیب برسانند. Chrome توصیه میکند آنها را فقط از <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> نصب کنید</translation> <translation id="6003112304606738118">درحال بارگیری… <ph name="HOURS" /> ساعت باقی مانده است</translation> +<translation id="6008161919456049856">گذرواژهها، روشهای پرداخت، و نشانیهایی که در «حساب Google» خود ذخیره کردهاید از این دستگاه برداشته خواهد شد. برای استفاده مجدد از آنها در Chrome، دوباره به سیستم وارد شوید.</translation> <translation id="6014316319780893079">با <ph name="BEGIN_LINK" />ابزارهای Chrome<ph name="END_LINK" />، میتوانید بهطور ایمن مرور کنید و کنترل را دردست بگیرید</translation> <translation id="6022659036123304283">Chrome را برای خود اختصاصی کنید</translation> <translation id="6025087594896450715">Google Chrome تا <ph name="REMAINING_TIME" /> دیگر بازراهاندازی خواهد شد</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fi.xtb b/chrome/app/resources/google_chrome_strings_fi.xtb index b7700c41..0cf7429 100644 --- a/chrome/app/resources/google_chrome_strings_fi.xtb +++ b/chrome/app/resources/google_chrome_strings_fi.xtb
@@ -384,6 +384,7 @@ <translation id="5953954252731207958">Sivut, joilla et ole käynyt viime aikoina. Chrome poisti luvan: <ph name="PERMISSION" /></translation> <translation id="5980111191913430208">Jos laajennukset, sovellukset ja teemat ovat tuntemattomista lähteistä, ne voivat vahingoittaa laitetta. Chrome suosittelee niiden asentamista vain täältä: <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /></translation> <translation id="6003112304606738118">Ladataan… <ph name="HOURS" /> tuntia jäljellä</translation> +<translation id="6008161919456049856">Google-tilille tallennetut salasanat, maksutavat ja osoitteet poistetaan tältä laitteelta. Jos haluat käyttää niitä uudelleen Chromessa, kirjaudu takaisin sisään.</translation> <translation id="6014316319780893079"><ph name="BEGIN_LINK" />Chromen työkaluilla<ph name="END_LINK" /> voit selata turvallisesti ja pitää ohjat omissa käsissäsi</translation> <translation id="6022659036123304283">Tee Chromesta näköisesi</translation> <translation id="6025087594896450715">Google Chrome käynnistyy uudelleen, kun <ph name="REMAINING_TIME" /> on kulunut</translation>
diff --git a/chrome/app/resources/google_chrome_strings_fil.xtb b/chrome/app/resources/google_chrome_strings_fil.xtb index 94988e9..491f57e 100644 --- a/chrome/app/resources/google_chrome_strings_fil.xtb +++ b/chrome/app/resources/google_chrome_strings_fil.xtb
@@ -392,6 +392,7 @@ <translation id="5953954252731207958">Hindi mo ito binisita kamakailan. Inalis ng Chrome ang <ph name="PERMISSION" /></translation> <translation id="5980111191913430208">Puwedeng mapinsala ng mga extension, app, at tema mula sa mga hindi kilalang source ang iyong device. Inirerekomenda ng Chrome na i-install lang ang mga ito mula sa <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /></translation> <translation id="6003112304606738118">Nagda-download... <ph name="HOURS" /> (na) oras na lang ang natitira</translation> +<translation id="6008161919456049856">Aalisin sa device na ito ang mga password, paraan ng pagbabayad, at address na na-save mo sa iyong Google Account. Para magamit ulit ang mga ito sa Chrome, mag-sign in ulit.</translation> <translation id="6014316319780893079">Gamit ang <ph name="BEGIN_LINK" />mga tool mula sa Chrome<ph name="END_LINK" />, makakapag-browse ka nang ligtas at mananatili kang may kontrol</translation> <translation id="6022659036123304283">Gawing iyo ang Chrome</translation> <translation id="6025087594896450715">Magre-restart ang Google Chrome sa <ph name="REMAINING_TIME" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_fr-CA.xtb b/chrome/app/resources/google_chrome_strings_fr-CA.xtb index 24c4c21..8af2821 100644 --- a/chrome/app/resources/google_chrome_strings_fr-CA.xtb +++ b/chrome/app/resources/google_chrome_strings_fr-CA.xtb
@@ -391,6 +391,7 @@ <translation id="5953954252731207958">Vous n'êtes pas venu récemment. Chrome a retiré <ph name="PERMISSION" /></translation> <translation id="5980111191913430208">Les extensions, les applis et les thèmes provenant de sources inconnues peuvent endommager votre appareil. Chrome recommande de les installer uniquement à partir de la <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /></translation> <translation id="6003112304606738118">Téléchargement en cours… <ph name="HOURS" /> heure(s) restante(s)</translation> +<translation id="6008161919456049856">Vos adresses, vos mots de passe et vos modes de paiement que vous avez enregistrés dans votre compte Google seront retirés de cet appareil. Pour les utiliser à nouveau dans Chrome, reconnectez-vous.</translation> <translation id="6014316319780893079">Grâce aux <ph name="BEGIN_LINK" />outils de Chrome<ph name="END_LINK" />, vous pouvez naviguer en toute sécurité et garder le contrôle</translation> <translation id="6022659036123304283">Appropriez-vous Chrome</translation> <translation id="6025087594896450715">Google Chrome redémarrera dans <ph name="REMAINING_TIME" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_fr.xtb b/chrome/app/resources/google_chrome_strings_fr.xtb index a03e56f..07858b6 100644 --- a/chrome/app/resources/google_chrome_strings_fr.xtb +++ b/chrome/app/resources/google_chrome_strings_fr.xtb
@@ -391,6 +391,7 @@ <translation id="5953954252731207958">Vous n'avez pas consulté le site récemment. Chrome a supprimé l'autorisation d'accéder à la <ph name="PERMISSION" />.</translation> <translation id="5980111191913430208">Les extensions, les applis et les thèmes provenant de sources inconnues peuvent endommager votre appareil. Chrome recommande de les installer uniquement à partir du <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />.</translation> <translation id="6003112304606738118">Téléchargement… <ph name="HOURS" /> heure(s) restante(s)</translation> +<translation id="6008161919456049856">Les mots de passe, modes de paiement et adresses que vous avez enregistrés dans votre compte Google seront supprimés de cet appareil. Pour les utiliser de nouveau dans Chrome, reconnectez-vous.</translation> <translation id="6014316319780893079">Avec les <ph name="BEGIN_LINK" />outils de Chrome<ph name="END_LINK" />, vous pouvez naviguer de façon sécurisée et garder le contrôle</translation> <translation id="6022659036123304283">Personnalisez Chrome</translation> <translation id="6025087594896450715">Google Chrome va redémarrer dans <ph name="REMAINING_TIME" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_gl.xtb b/chrome/app/resources/google_chrome_strings_gl.xtb index 6f848cd..2eb926b 100644 --- a/chrome/app/resources/google_chrome_strings_gl.xtb +++ b/chrome/app/resources/google_chrome_strings_gl.xtb
@@ -392,6 +392,7 @@ <translation id="5953954252731207958">Levas un tempo sen entrar. Chrome quitou o seguinte permiso: <ph name="PERMISSION" /></translation> <translation id="5980111191913430208">As extensións, as aplicacións e os temas de fontes descoñecidas poden danar o dispositivo. Chromium recomenda que os instales só desde <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /></translation> <translation id="6003112304606738118">Descargando… Tempo restante: <ph name="HOURS" /> h</translation> +<translation id="6008161919456049856">Os contrasinais, métodos de pago e enderezos que gardes na túa Conta de Google quitaranse deste dispositivo. Para usalos de novo en Chrome, volve iniciar sesión.</translation> <translation id="6014316319780893079">Coas <ph name="BEGIN_LINK" />ferramentas de Chrome<ph name="END_LINK" />, podes navegar de maneira segura e manter o control</translation> <translation id="6022659036123304283">Personaliza Chrome</translation> <translation id="6025087594896450715">Google Chrome reiniciarase dentro de <ph name="REMAINING_TIME" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_gu.xtb b/chrome/app/resources/google_chrome_strings_gu.xtb index 24c1457..2d8fd8e 100644 --- a/chrome/app/resources/google_chrome_strings_gu.xtb +++ b/chrome/app/resources/google_chrome_strings_gu.xtb
@@ -392,6 +392,7 @@ <translation id="5953954252731207958">તમે તાજેતરમાં આ સાઇટની મુલાકાત લીધી નથી. Chrome દ્વારા <ph name="PERMISSION" />ની પરવાનગી કાઢી નાખવામાં આવી</translation> <translation id="5980111191913430208">અજાણ્યા સૉર્સ પરના એક્સ્ટેન્શન, ઍપ અને થીમ તમારા ડિવાઇસને નુકસાન પહોંચાડી શકે છે. Chromium તેને <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> પરથી જ ઇન્સ્ટૉલ કરવાનો સુઝાવ આપે છે</translation> <translation id="6003112304606738118">ડાઉનલોડ કરી રહ્યાં છીએ… <ph name="HOURS" /> કલાક બાકી છે</translation> +<translation id="6008161919456049856">તમે તમારા Google એકાઉન્ટમાં સાચવેલા તમારા પાસવર્ડ, ચુકવણી પદ્ધતિઓ અને સરનામા આ ડિવાઇસમાંથી કાઢી નાખવામાં આવશે. Chromeમાં તેનો ફરીથી ઉપયોગ કરવા માટે, પાછું સાઇન ઇન કરો.</translation> <translation id="6014316319780893079"><ph name="BEGIN_LINK" />Chromeના ટૂલ<ph name="END_LINK" /> વડે, તમે સલામત રીતે બ્રાઉઝ કરી શકો છો તેમજ નિયંત્રણ જાળવી શકો છો</translation> <translation id="6022659036123304283">Chromeને તમારી જરૂરિયાત અનુરૂપ બનાવો</translation> <translation id="6025087594896450715">Google Chrome <ph name="REMAINING_TIME" />માં ફરી શરૂ થશે</translation>
diff --git a/chrome/app/resources/google_chrome_strings_hr.xtb b/chrome/app/resources/google_chrome_strings_hr.xtb index c72a399..a37fdd70 100644 --- a/chrome/app/resources/google_chrome_strings_hr.xtb +++ b/chrome/app/resources/google_chrome_strings_hr.xtb
@@ -384,6 +384,7 @@ <translation id="5953954252731207958">U posljednje vrijeme niste posjećivali web-lokaciju. Chrome je uklonio <ph name="PERMISSION" /></translation> <translation id="5980111191913430208">Proširenja, aplikacije i teme iz nepoznatih izvora mogu naštetiti vašem uređaju. Chrome preporučuje da ih instalirate samo s usluge <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /></translation> <translation id="6003112304606738118">Preuzimanje... Još <ph name="HOURS" /> h</translation> +<translation id="6008161919456049856">Zaporke, načini plaćanja i adrese koje ste spremili na Google računu uklonit će se s ovog uređaja. Da biste ih ponovo upotrebljavali u Chromeu, ponovo se prijavite.</translation> <translation id="6014316319780893079">Uz <ph name="BEGIN_LINK" />Chromeove alate<ph name="END_LINK" /> možete sigurno pregledavati i zadržati kontrolu</translation> <translation id="6022659036123304283">Prilagodite Chrome sebi</translation> <translation id="6025087594896450715">Google Chrome ponovo će se pokrenuti za <ph name="REMAINING_TIME" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_hu.xtb b/chrome/app/resources/google_chrome_strings_hu.xtb index 3e386dad..99aa35b 100644 --- a/chrome/app/resources/google_chrome_strings_hu.xtb +++ b/chrome/app/resources/google_chrome_strings_hu.xtb
@@ -384,6 +384,7 @@ <translation id="5953954252731207958">Nem látogatta meg mostanában. A Chrome eltávolította a következőt: <ph name="PERMISSION" />.</translation> <translation id="5980111191913430208">Az ismeretlen forrásból származó bővítmények, alkalmazások és témák károsíthatják az eszközt. A Chrome azt javasolja, hogy csak a következő helyről telepítse őket: <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />.</translation> <translation id="6003112304606738118">Letöltés… <ph name="HOURS" /> óra van hátra</translation> +<translation id="6008161919456049856">A Google-fiókjába mentett jelszavai, fizetési módjai és címei el lesznek távolítva erről az eszközről. Ha újra használni szeretné őket a Chrome-ban, jelentkezzen be újra.</translation> <translation id="6014316319780893079">A <ph name="BEGIN_LINK" />Chrome eszközeivel<ph name="END_LINK" /> biztonságosan böngészhet, és kézben tarthatja az irányítást</translation> <translation id="6022659036123304283">Tegye személyessé a Chrome-ot</translation> <translation id="6025087594896450715">A Google Chrome újraindul <ph name="REMAINING_TIME" /> múlva</translation>
diff --git a/chrome/app/resources/google_chrome_strings_id.xtb b/chrome/app/resources/google_chrome_strings_id.xtb index 17576c2..5fee4d1db 100644 --- a/chrome/app/resources/google_chrome_strings_id.xtb +++ b/chrome/app/resources/google_chrome_strings_id.xtb
@@ -384,6 +384,7 @@ <translation id="5953954252731207958">Anda tidak membuka situs ini baru-baru ini. Chrome menghapus izin <ph name="PERMISSION" /></translation> <translation id="5980111191913430208">Ekstensi, aplikasi, dan tema dari sumber tidak dikenal dapat membahayakan perangkat Anda. Chrome merekomendasikan hanya menginstal ekstensi, aplikasi, dan tema dari <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /></translation> <translation id="6003112304606738118">Mendownload... <ph name="HOURS" /> jam lagi</translation> +<translation id="6008161919456049856">Sandi, metode pembayaran, dan alamat Anda yang disimpan di Akun Google Anda akan dihapus dari perangkat ini. Untuk menggunakannya lagi di Chrome, login kembali.</translation> <translation id="6014316319780893079">Dengan <ph name="BEGIN_LINK" />alat dari Chrome<ph name="END_LINK" />, Anda dapat menjelajah dengan aman dan tetap memegang kendali</translation> <translation id="6022659036123304283">Sesuaikan Chrome dengan selera Anda</translation> <translation id="6025087594896450715">Google Chrome akan dimulai ulang dalam <ph name="REMAINING_TIME" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_is.xtb b/chrome/app/resources/google_chrome_strings_is.xtb index 3a9d461..31d1a31a 100644 --- a/chrome/app/resources/google_chrome_strings_is.xtb +++ b/chrome/app/resources/google_chrome_strings_is.xtb
@@ -392,6 +392,7 @@ <translation id="5953954252731207958">Þú hefur ekki skoðað vefsvæðið nýlega. Chrome fjarlægði <ph name="PERMISSION" /></translation> <translation id="5980111191913430208">Viðbætur, forrit og þemu frá óþekktum uppruna geta skaðað tækið þitt. Chrome mælir með að sækja slíkar skrár aðeins í <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /></translation> <translation id="6003112304606738118">Sækir... <ph name="HOURS" /> klst. eftir</translation> +<translation id="6008161919456049856">Aðgangsorðin þín, greiðslumátar og heimilisföng sem þú vistaðir á Google-reikningnum þínum verða fjarlægð úr þessu tæki. Til að nota þau aftur í Chrome skaltu skrá þig aftur inn.</translation> <translation id="6014316319780893079"><ph name="BEGIN_LINK" />Verkfæri Chrome<ph name="END_LINK" /> gera þér kleift að vafra á öruggan hátt og vera við stjórnvölinn</translation> <translation id="6022659036123304283">Gerðu Chrome að þínu</translation> <translation id="6025087594896450715">Google Chrome endurræsist eftir <ph name="REMAINING_TIME" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_km.xtb b/chrome/app/resources/google_chrome_strings_km.xtb index 9aa83d2..61877e3 100644 --- a/chrome/app/resources/google_chrome_strings_km.xtb +++ b/chrome/app/resources/google_chrome_strings_km.xtb
@@ -391,6 +391,7 @@ <translation id="5953954252731207958">អ្នកមិនបានចូលមើលនាពេលថ្មីៗនេះទេ។ Chrome បានដកការអនុញ្ញាតឱ្យប្រើ<ph name="PERMISSION" />ចេញ</translation> <translation id="5980111191913430208">កម្មវិធីបន្ថែម កម្មវិធី និងទម្រង់រចនាពីប្រភពដែលមិនស្គាល់អាចបង្កគ្រោះថ្នាក់ដល់ឧបករណ៍របស់អ្នក។ Chrome ណែនាំឱ្យដំឡើងពួកវាតែពី <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> ប៉ុណ្ណោះ</translation> <translation id="6003112304606738118">កំពុងទាញយក... នៅសល់ <ph name="HOURS" /> ម៉ោងទៀត</translation> +<translation id="6008161919456049856">ពាក្យសម្ងាត់ វិធីបង់ប្រាក់ និងអាសយដ្ឋានរបស់អ្នកដែលអ្នកបានរក្សាទុកនៅក្នុងគណនី Google នឹងត្រូវបានដកចេញពីឧបករណ៍នេះ។ ដើម្បីប្រើព័ត៌មានទាំងនេះម្ដងទៀតនៅក្នុង Chrome សូមចូលគណនីវិញ។</translation> <translation id="6014316319780893079">តាមរយៈ<ph name="BEGIN_LINK" />ឧបករណ៍ពី Chrome<ph name="END_LINK" /> អ្នកអាចរុករកដោយសុវត្ថិភាព និងរក្សាការគ្រប់គ្រងបាន</translation> <translation id="6022659036123304283">ធ្វើឱ្យ Chrome ក្លាយជារបស់អ្នក</translation> <translation id="6025087594896450715">Google Chrome នឹងចាប់ផ្ដើមឡើងវិញក្នុងរយៈពេល <ph name="REMAINING_TIME" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_ko.xtb b/chrome/app/resources/google_chrome_strings_ko.xtb index f450c69..bd9aaf531 100644 --- a/chrome/app/resources/google_chrome_strings_ko.xtb +++ b/chrome/app/resources/google_chrome_strings_ko.xtb
@@ -391,6 +391,7 @@ <translation id="5953954252731207958">최근에 사이트를 방문하지 않았습니다. Chrome에서 <ph name="PERMISSION" /> 권한을 삭제했습니다.</translation> <translation id="5980111191913430208">알 수 없는 소스의 확장 프로그램, 앱, 테마는 기기를 손상시킬 수 있습니다. Chrome에서는 <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />에서 다운로드한 확장 프로그램, 앱, 테마만 설치할 것을 권장합니다.</translation> <translation id="6003112304606738118">다운로드 중... <ph name="HOURS" />시간 남음</translation> +<translation id="6008161919456049856">Google 계정에 저장된 비밀번호, 결제 수단, 주소가 이 기기에서 삭제됩니다. Chrome에서 다시 사용하려면 다시 로그인하세요</translation> <translation id="6014316319780893079"><ph name="BEGIN_LINK" />Chrome의 도구<ph name="END_LINK" />로 안전하게 탐색하고 관리할 수 있습니다.</translation> <translation id="6022659036123304283">나만의 Chrome 만들기</translation> <translation id="6025087594896450715"><ph name="REMAINING_TIME" /> 후 Chrome 다시 시작</translation>
diff --git a/chrome/app/resources/google_chrome_strings_lo.xtb b/chrome/app/resources/google_chrome_strings_lo.xtb index 69d5c95..5faf4bfd 100644 --- a/chrome/app/resources/google_chrome_strings_lo.xtb +++ b/chrome/app/resources/google_chrome_strings_lo.xtb
@@ -392,6 +392,7 @@ <translation id="5953954252731207958">ທ່ານບໍ່ໄດ້ເຂົ້າເບິ່ງເມື່ອບໍ່ດົນມານີ້. Chrome ໄດ້ລຶບສິດເຂົ້າເຖິງ <ph name="PERMISSION" /> ອອກແລ້ວ</translation> <translation id="5980111191913430208">ສ່ວນຂະຫຍາຍ, ແອັບ ແລະ ຮູບແບບສີສັນຈາກແຫຼ່ງຂໍ້ມູນທີ່ບໍ່ຮູ້ຈັກອາດເປັນອັນຕະລາຍກັບອຸປະກອນຂອງທ່ານໄດ້. Chrome ແນະນຳໃຫ້ຕິດຕັ້ງພວກມັນຈາກ <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> ເທົ່ານັ້ນ</translation> <translation id="6003112304606738118">ກຳລັງດາວໂຫຼດ... ຍັງເຫຼືອ <ph name="HOURS" /> ຊົ່ວໂມງ</translation> +<translation id="6008161919456049856">ລະບົບຈະລຶບລະຫັດຜ່ານ, ວິທີການຈ່າຍເງິນ ແລະ ທີ່ຢູ່ທີ່ທ່ານບັນທຶກໄວ້ໃນບັນຊີ Google ຂອງທ່ານອອກຈາກອຸປະກອນນີ້. ເພື່ອໃຊ້ຂໍ້ມູນເຫຼົ່ານີ້ໃນ Chrome, ໃຫ້ເຂົ້າສູ່ລະບົບອີກຄັ້ງ.</translation> <translation id="6014316319780893079">ດ້ວຍ <ph name="BEGIN_LINK" />ເຄື່ອງມືຈາກ Chrome<ph name="END_LINK" />, ທ່ານຈະສາມາດທ່ອງເວັບໄດ້ຢ່າງປອດໄພ ແລະ ຄວບຄຸມສິ່ງຕ່າງໆໄດ້</translation> <translation id="6022659036123304283">ເຮັດໃຫ້ Chrome ເປັນຂອງທ່ານ</translation> <translation id="6025087594896450715">Google Chrome ຈະຣີສະຕາດໃນ <ph name="REMAINING_TIME" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_ml.xtb b/chrome/app/resources/google_chrome_strings_ml.xtb index 4ecae6a3..74ecf04 100644 --- a/chrome/app/resources/google_chrome_strings_ml.xtb +++ b/chrome/app/resources/google_chrome_strings_ml.xtb
@@ -392,6 +392,7 @@ <translation id="5953954252731207958">നിങ്ങൾ അടുത്തിടെ സന്ദർശിച്ചിട്ടില്ല. <ph name="PERMISSION" /> എന്ന അനുമതി Chrome നീക്കം ചെയ്തു</translation> <translation id="5980111191913430208">അറിയാത്ത ഉറവിടങ്ങളിൽ നിന്നുള്ള വിപുലീകരണങ്ങൾ, ആപ്പുകൾ, തീമുകൾ എന്നിവ നിങ്ങളുടെ ഉപകരണത്തിന് ദോഷകരമാകാം. അവ <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> എന്നതിൽ നിന്ന് മാത്രം ഇൻസ്റ്റാൾ ചെയ്യാൻ Chrome നിർദ്ദേശിക്കുന്നു</translation> <translation id="6003112304606738118">ഡൗൺലോഡ് ചെയ്യുന്നു... <ph name="HOURS" /> മണിക്കൂർ ശേഷിക്കുന്നു</translation> +<translation id="6008161919456049856">Google Account-ൽ സംരക്ഷിച്ചിരിക്കുന്ന നിങ്ങളുടെ പാസ്വേഡുകൾ, പേയ്മെന്റ് രീതികൾ, വിലാസങ്ങൾ എന്നിവ ഈ ഉപകരണത്തിൽ നിന്ന് നീക്കം ചെയ്യും. Chrome-ൽ അവ വീണ്ടും ഉപയോഗിക്കാൻ, വീണ്ടും സൈൻ ഇൻ ചെയ്യുക.</translation> <translation id="6014316319780893079"><ph name="BEGIN_LINK" />Chrome-ൽ നിന്നുള്ള ടൂളുകൾ<ph name="END_LINK" /> ഉപയോഗിച്ച്, നിങ്ങൾക്ക് സുരക്ഷിതമായി ബ്രൗസ് ചെയ്യാനും നിയന്ത്രണത്തിൽ തുടരാനുമാകും</translation> <translation id="6022659036123304283">Chrome-നെ നിങ്ങളുടേതാക്കുക</translation> <translation id="6025087594896450715"><ph name="REMAINING_TIME" />-നുള്ളിൽ Google Chrome റീസ്റ്റാർട്ട് ചെയ്യും</translation>
diff --git a/chrome/app/resources/google_chrome_strings_mn.xtb b/chrome/app/resources/google_chrome_strings_mn.xtb index 9ff5ed0..efa6889f 100644 --- a/chrome/app/resources/google_chrome_strings_mn.xtb +++ b/chrome/app/resources/google_chrome_strings_mn.xtb
@@ -392,6 +392,7 @@ <translation id="5953954252731207958">Та ойрын үед зочлоогүй байна. Chrome <ph name="PERMISSION" />-г хассан</translation> <translation id="5980111191913430208">Тодорхойгүй эх сурвалжийн өргөтгөл, апп, загварууд таны төхөөрөмжийг гэмтээх боломжтой. Chrome тэдгээрийг зөвхөн <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />-с суулгахыг зөвлөдөг</translation> <translation id="6003112304606738118">Татаж байна... <ph name="HOURS" /> цаг үлдсэн</translation> +<translation id="6008161919456049856">Таны Google Бүртгэлдээ хадгалсан нууц үг, төлбөрийн хэрэгсэл, хаягуудыг энэ төхөөрөмжөөс хасна. Тэдгээрийг Chrome-д дахин ашиглахын тулд буцаж нэвтэрнэ үү.</translation> <translation id="6014316319780893079"><ph name="BEGIN_LINK" />Chrome-н хэрэгслийн<ph name="END_LINK" /> тусламжтайгаар та аюулгүй үзэх болон хяналтыг гартаа байлгах боломжтой</translation> <translation id="6022659036123304283">Chrome-г хүссэнээрээ тохируулаарай</translation> <translation id="6025087594896450715">Google Chrome-г <ph name="REMAINING_TIME" />-н дараа эхлүүлнэ</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ms.xtb b/chrome/app/resources/google_chrome_strings_ms.xtb index 36355e95..ba96e67 100644 --- a/chrome/app/resources/google_chrome_strings_ms.xtb +++ b/chrome/app/resources/google_chrome_strings_ms.xtb
@@ -384,6 +384,7 @@ <translation id="5953954252731207958">Anda belum melawati laman web ini baru-baru ini. Chrome mengalih keluar <ph name="PERMISSION" /></translation> <translation id="5980111191913430208">Sambungan, apl dan tema daripada sumber yang tidak diketahui boleh membahayakan peranti anda. Chrome mengesyorkan agar fail dipasang daripada <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> sahaja</translation> <translation id="6003112304606738118">Memuat turun… <ph name="HOURS" /> jam lagi</translation> +<translation id="6008161919456049856">Kata laluan, kaedah pembayaran dan alamat anda yang anda simpan dalam Google Account anda akan dialih keluar daripada peranti ini. Untuk menggunakan maklumat itu semula dalam Chrome, log masuk semula.</translation> <translation id="6014316319780893079">Dengan <ph name="BEGIN_LINK" />alatan daripada Chrome<ph name="END_LINK" />, anda boleh menyemak imbas dengan selamat dan mengekalkan kawalan anda</translation> <translation id="6022659036123304283">Peribadikan Chrome anda</translation> <translation id="6025087594896450715">Google Chrome akan dimulakan semula dalam masa <ph name="REMAINING_TIME" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_my.xtb b/chrome/app/resources/google_chrome_strings_my.xtb index f0ed7c9..f3dca23 100644 --- a/chrome/app/resources/google_chrome_strings_my.xtb +++ b/chrome/app/resources/google_chrome_strings_my.xtb
@@ -392,6 +392,7 @@ <translation id="5953954252731207958">လတ်တလော ဝင်ကြည့်ထားခြင်း မရှိပါ။ Chrome သည် <ph name="PERMISSION" /> ကို ဖယ်ရှားလိုက်သည်</translation> <translation id="5980111191913430208">မူရင်းမသိရှိသော ရင်းမြစ်များမှ နောက်ဆက်တွဲများ၊ အက်ပ်နှင့် အပြင်အဆင်များသည် သင့်စက်ကို ထိခိုက်စေနိုင်သည်။ ၎င်းတို့ကို <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> မှသာ ထည့်သွင်းရန် Chrome က အကြံပြုပါသည်</translation> <translation id="6003112304606738118">ဒေါင်းလုဒ်လုပ်နေသည်… <ph name="HOURS" /> နာရီ ကျန်သည်</translation> +<translation id="6008161919456049856">သင်၏ Google Account တွင် သိမ်းထားသော စကားဝှက်၊ ငွေပေးချေနည်းလမ်းနှင့် လိပ်စာများကို ဤစက်မှ ဖယ်ရှားပါမည်။ Chrome တွင် ၎င်းတို့ကို ပြန်သုံးရန်အတွက် ပြန်လည်လက်မှတ်ထိုးဝင်ပါ။</translation> <translation id="6014316319780893079"><ph name="BEGIN_LINK" />Chrome မှ တူးလ်များ<ph name="END_LINK" /> ဖြင့် လုံခြုံစွာဘရောက်စ်လုပ်ပြီး ထိန်းချုပ်နိုင်သည်</translation> <translation id="6022659036123304283">Chrome ကို သင့်စိတ်ကြိုက်ပြင်ဆင်လိုက်ပါ</translation> <translation id="6025087594896450715">Google Chrome ကို <ph name="REMAINING_TIME" /> အတွင်း ပြန်စမည်</translation>
diff --git a/chrome/app/resources/google_chrome_strings_nl.xtb b/chrome/app/resources/google_chrome_strings_nl.xtb index 46f3aa5..3fa885e2 100644 --- a/chrome/app/resources/google_chrome_strings_nl.xtb +++ b/chrome/app/resources/google_chrome_strings_nl.xtb
@@ -389,6 +389,7 @@ <translation id="5953954252731207958">Je bent hier niet recent geweest. Chrome heeft <ph name="PERMISSION" /> verwijderd.</translation> <translation id="5980111191913430208">Extensies, apps en thema's van onbekende bronnen kunnen schadelijk zijn voor je apparaat. Chrome raadt je aan ze alleen te installeren vanuit de <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />.</translation> <translation id="6003112304606738118">Downloaden... Nog <ph name="HOURS" /> uur</translation> +<translation id="6008161919456049856">De wachtwoorden, betaalmethoden en adressen die je hebt opgeslagen in je Google-account, worden verwijderd van dit apparaat. Log opnieuw in om ze weer te gebruiken in Chrome.</translation> <translation id="6014316319780893079">Met <ph name="BEGIN_LINK" />tools van Chrome<ph name="END_LINK" /> kun je beveiligd browsen en de controle behouden</translation> <translation id="6022659036123304283">Personaliseer Chrome voor jou</translation> <translation id="6025087594896450715">Google Chrome wordt over <ph name="REMAINING_TIME" /> opnieuw opgestart</translation>
diff --git a/chrome/app/resources/google_chrome_strings_no.xtb b/chrome/app/resources/google_chrome_strings_no.xtb index 5eec7ef..10ce6c33 100644 --- a/chrome/app/resources/google_chrome_strings_no.xtb +++ b/chrome/app/resources/google_chrome_strings_no.xtb
@@ -384,6 +384,7 @@ <translation id="5953954252731207958">Du har ikke vært her i det siste. Chrome har fjernet <ph name="PERMISSION" /></translation> <translation id="5980111191913430208">Utvidelser, apper og temaer fra ukjente kilder kan skade enheten din. Chrome anbefaler at du kun installerer dem fra <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /></translation> <translation id="6003112304606738118">Laster ned … <ph name="HOURS" /> time(r) igjen</translation> +<translation id="6008161919456049856">Passordene, betalingsmåtene og adressene du har lagret i Google-kontoen din, blir fjernet fra denne enheten. For å bruke dem i Chrome igjen, logg på igjen.</translation> <translation id="6014316319780893079">Med <ph name="BEGIN_LINK" />verktøy fra Chrome<ph name="END_LINK" /> kan du surfe trygt og ha kontroll</translation> <translation id="6022659036123304283">Gi Chrome et personlig preg</translation> <translation id="6025087594896450715">Google Chrome startes på nytt om <ph name="REMAINING_TIME" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_pa.xtb b/chrome/app/resources/google_chrome_strings_pa.xtb index 1fd1363..9c417c05 100644 --- a/chrome/app/resources/google_chrome_strings_pa.xtb +++ b/chrome/app/resources/google_chrome_strings_pa.xtb
@@ -392,6 +392,7 @@ <translation id="5953954252731207958">ਜਿਨ੍ਹਾਂ 'ਤੇ ਤੁਸੀਂ ਹਾਲ ਹੀ ਵਿੱਚ ਨਹੀਂ ਗਏ ਹੋ। Chrome ਨੇ <ph name="PERMISSION" /> ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਹੈ</translation> <translation id="5980111191913430208">ਅਗਿਆਤ ਸਰੋਤਾਂ ਤੋਂ ਡਾਊਨਲੋਡ ਕੀਤੀਆਂ ਐਕਸਟੈਂਸ਼ਨਾਂ, ਐਪਾਂ ਅਤੇ ਥੀਮਾਂ ਨਾਲ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਨੂੰ ਨੁਕਸਾਨ ਪਹੁੰਚ ਸਕਦਾ ਹੈ। Chrome ਇਨ੍ਹਾਂ ਨੂੰ ਸਿਰਫ਼ <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> ਤੋਂ ਸਥਾਪਤ ਕਰਨ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕਰਦਾ ਹੈ</translation> <translation id="6003112304606738118">ਡਾਊਨਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ... <ph name="HOURS" /> ਘੰਟੇ ਬਾਕੀ</translation> +<translation id="6008161919456049856">ਤੁਹਾਡੇ Google ਖਾਤੇ ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤੇ ਪਾਸਵਰਡਾਂ, ਭੁਗਤਾਨ ਵਿਧੀਆਂ ਅਤੇ ਪਤਿਆਂ ਨੂੰ ਇਸ ਡੀਵਾਈਸ ਤੋਂ ਹਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ। ਉਨ੍ਹਾਂ ਨੂੰ Chrome ਵਿੱਚ ਦੁਬਾਰਾ ਵਰਤਣ ਲਈ, ਵਾਪਸ ਸਾਈਨ-ਇਨ ਕਰੋ।</translation> <translation id="6014316319780893079"><ph name="BEGIN_LINK" />Chrome ਤੋਂ ਟੂਲਾਂ<ph name="END_LINK" /> ਨਾਲ, ਤੁਸੀਂ ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ ਬ੍ਰਾਊਜ਼ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਖੁਦ ਕੰਟਰੋਲ ਕਰ ਸਕਦੇ ਹੋ</translation> <translation id="6022659036123304283">Chrome ਨੂੰ ਆਪਣੇ ਅਨੁਸਾਰ ਵਿਵਸਥਿਤ ਕਰੋ</translation> <translation id="6025087594896450715">Google Chrome <ph name="REMAINING_TIME" /> ਵਿੱਚ ਮੁੜ-ਸ਼ੁਰੂ ਹੋਵੇਗਾ</translation>
diff --git a/chrome/app/resources/google_chrome_strings_ru.xtb b/chrome/app/resources/google_chrome_strings_ru.xtb index 5d0b2120..6b36b650 100644 --- a/chrome/app/resources/google_chrome_strings_ru.xtb +++ b/chrome/app/resources/google_chrome_strings_ru.xtb
@@ -383,6 +383,7 @@ <translation id="5953954252731207958">Вы давно не посещали сайт. Браузер Chrome отозвал разрешение "<ph name="PERMISSION" />".</translation> <translation id="5980111191913430208">Расширения, приложения и темы из неизвестных источников могут навредить устройству. Чтобы устанавливать подобное ПО, рекомендуем использовать этот сервис (<ph name="IDS_EXTENSION_WEB_STORE_TITLE" />).</translation> <translation id="6003112304606738118">Скачивание… Осталось: <ph name="HOURS" /> ч.</translation> +<translation id="6008161919456049856">Пароли, способы оплаты и адреса, которые вы сохранили в аккаунте Google, будут удалены с этого устройства. Чтобы снова использовать их в Chrome, потребуется войти в аккаунт.</translation> <translation id="6014316319780893079"><ph name="BEGIN_LINK" />Инструменты Chrome<ph name="END_LINK" /> защищают ваши данные при работе в интернете</translation> <translation id="6022659036123304283">Настройте Chrome для себя</translation> <translation id="6025087594896450715">Google Chrome перезапустится через <ph name="REMAINING_TIME" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_sk.xtb b/chrome/app/resources/google_chrome_strings_sk.xtb index 82330f2..9f5e367 100644 --- a/chrome/app/resources/google_chrome_strings_sk.xtb +++ b/chrome/app/resources/google_chrome_strings_sk.xtb
@@ -389,6 +389,7 @@ <translation id="5953954252731207958">Tento web ste v poslednom čase nenavštívili. Chrome odstránil povolenie <ph name="PERMISSION" />.</translation> <translation id="5980111191913430208">Rozšírenia, aplikácie a motívy z neznámych zdrojov môžu poškodiť vaše zariadenie. Chrome odporúča ich inštaláciu iba zo zdroja <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />.</translation> <translation id="6003112304606738118">Sťahuje sa… Zostávajúci čas: <ph name="HOURS" /> h</translation> +<translation id="6008161919456049856">Heslá, spôsoby platby a adresy uložené vo vašom účte Google budú z tohto zariadenia odstránené. Ak ich chcete opäť používať v Chrome, znova sa prihláste.</translation> <translation id="6014316319780893079">Pomocou <ph name="BEGIN_LINK" />nástrojov Chromu<ph name="END_LINK" /> môžete bezpečne prehliadať a mať všetko pod kontrolou</translation> <translation id="6022659036123304283">Upravte si Chrome podľa seba</translation> <translation id="6025087594896450715">Google Chrome sa reštartuje o <ph name="REMAINING_TIME" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_sl.xtb b/chrome/app/resources/google_chrome_strings_sl.xtb index 81f999f5c..8f41f17 100644 --- a/chrome/app/resources/google_chrome_strings_sl.xtb +++ b/chrome/app/resources/google_chrome_strings_sl.xtb
@@ -392,6 +392,7 @@ <translation id="5953954252731207958">Nedavno niste obiskali tega mesta. Chrome je odstranil to dovoljenje: <ph name="PERMISSION" />.</translation> <translation id="5980111191913430208">Razširitve, aplikacije in teme iz neznanih virov lahko škodijo napravi. Chrome priporoča, da jih namestite samo tukaj: <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />.</translation> <translation id="6003112304606738118">Prenašanje … Še <ph name="HOURS" /> h.</translation> +<translation id="6008161919456049856">Gesla, plačilna sredstva in naslovi, ki ste jih shranili v računu Google, bodo odstranjeni iz te naprave. Če jih želite znova uporabljati v Chromu, se vnovič prijavite.</translation> <translation id="6014316319780893079">S <ph name="BEGIN_LINK" />Chromovimi orodji<ph name="END_LINK" /> lahko varno brskate in imate nadzor</translation> <translation id="6022659036123304283">Prilagodite si Chrome</translation> <translation id="6025087594896450715">Google Chrome se bo znova zagnal čez toliko časa: <ph name="REMAINING_TIME" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_sv.xtb b/chrome/app/resources/google_chrome_strings_sv.xtb index 8e1555d..e0bd2f2 100644 --- a/chrome/app/resources/google_chrome_strings_sv.xtb +++ b/chrome/app/resources/google_chrome_strings_sv.xtb
@@ -392,6 +392,7 @@ <translation id="5953954252731207958">Du har inte besökt webbplatsen nyligen. Chrome har tagit bort <ph name="PERMISSION" /></translation> <translation id="5980111191913430208">Tillägg, appar och teman från okända källor kan skada enheten. Vi rekommenderar att du bara installerar dem från <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /></translation> <translation id="6003112304606738118">Laddar ned … <ph name="HOURS" /> timme/timmar kvar</translation> +<translation id="6008161919456049856">Dina sparade lösenord, betalningsmetoder och adresser i Google-kontot tas bort från den här enheten. Logga in på nytt om du vill använda dem igen i Chrome.</translation> <translation id="6014316319780893079">Med <ph name="BEGIN_LINK" />verktyg från Chrome<ph name="END_LINK" /> kan du surfa säkert och behålla kontrollen</translation> <translation id="6022659036123304283">Anpassa Chrome</translation> <translation id="6025087594896450715">Google Chrome startas om om <ph name="REMAINING_TIME" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_sw.xtb b/chrome/app/resources/google_chrome_strings_sw.xtb index dd1136aa..f0a3a2e 100644 --- a/chrome/app/resources/google_chrome_strings_sw.xtb +++ b/chrome/app/resources/google_chrome_strings_sw.xtb
@@ -392,6 +392,7 @@ <translation id="5953954252731207958">Hujatembelea hivi majuzi. Chrome imeondoa <ph name="PERMISSION" /></translation> <translation id="5980111191913430208">Viendelezi, programu na mandhari kutoka vyanzo visivyojulikana vinaweza kudhuru kifaa chako. Chrome inapendekeza uviweke kutoka <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> pekee</translation> <translation id="6003112304606738118">Inapakua... Zimesalia saa <ph name="HOURS" /></translation> +<translation id="6008161919456049856">Manenosiri, njia za kulipa na anwani ulizohifadhi katika Akaunti yako ya Google zitaondolewa kwenye kifaa hiki. Ili uzitumie tena katika Chrome, ingia katika akaunti.</translation> <translation id="6014316319780893079">Kwa kutumia <ph name="BEGIN_LINK" />zana kutoka Chrome<ph name="END_LINK" />, unaweza kuvinjari kwa usalama na kuwa na udhibiti</translation> <translation id="6022659036123304283">Weka mapendeleo kwenye Chrome iwe unavyopenda</translation> <translation id="6025087594896450715">Google Chrome itazima kisha iwake baada ya <ph name="REMAINING_TIME" /></translation>
diff --git a/chrome/app/resources/google_chrome_strings_uz.xtb b/chrome/app/resources/google_chrome_strings_uz.xtb index 66e86d7..0b2e9d7 100644 --- a/chrome/app/resources/google_chrome_strings_uz.xtb +++ b/chrome/app/resources/google_chrome_strings_uz.xtb
@@ -388,6 +388,7 @@ <translation id="5953954252731207958">Yaqinda ochmagansiz. Chrome olib tashladi: <ph name="PERMISSION" /></translation> <translation id="5980111191913430208">Nomaʼlum manbalar kengaytmalari, ilovalari va mavzulari qurilmangizni zararlashi mumkin. Chrome ularni faqat <ph name="IDS_EXTENSION_WEB_STORE_TITLE" /> orqali oʻrnatishni tavsiya qiladi</translation> <translation id="6003112304606738118">Yuklab olinmoqda... <ph name="HOURS" /> soat qoldi</translation> +<translation id="6008161919456049856">Google hisobingizga saqlangan parollar, toʻlov usullari va manzillar bu qurilmadan olib tashlanadi. Ularni Chromeʼda yana ishlatish uchun hisobingizga kiring.</translation> <translation id="6014316319780893079"><ph name="BEGIN_LINK" />Chrome vositalari yordamida<ph name="END_LINK" /> xavfsiz kezishingiz va nazoratni ushlab turishingiz mumkin</translation> <translation id="6022659036123304283">Shaxsiy Chrome brauzeringiz</translation> <translation id="6025087594896450715">Google Chrome <ph name="REMAINING_TIME" />dan keyin qayta ishga tushadi</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-CN.xtb b/chrome/app/resources/google_chrome_strings_zh-CN.xtb index 3383df6e..020ea5f 100644 --- a/chrome/app/resources/google_chrome_strings_zh-CN.xtb +++ b/chrome/app/resources/google_chrome_strings_zh-CN.xtb
@@ -383,6 +383,7 @@ <translation id="5953954252731207958">您近期未访问过该网站。Chrome 移除了<ph name="PERMISSION" />权限</translation> <translation id="5980111191913430208">来源不明的扩展程序、应用和主题可能会危害您的设备。Chrome 建议只从 <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />安装这些内容</translation> <translation id="6003112304606738118">正在下载…还需 <ph name="HOURS" /> 小时</translation> +<translation id="6008161919456049856">您在 Google 账号中保存的密码、支付方式和地址将从此设备中移除。如需在 Chrome 中重新使用这些数据,请重新登录。</translation> <translation id="6014316319780893079">借助 <ph name="BEGIN_LINK" />Chrome 中的工具<ph name="END_LINK" />,您可以安全地浏览并掌控个人数据的安全</translation> <translation id="6022659036123304283">定制您的专属 Chrome</translation> <translation id="6025087594896450715">Google Chrome 将在 <ph name="REMAINING_TIME" />后重启</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-HK.xtb b/chrome/app/resources/google_chrome_strings_zh-HK.xtb index 95735d91..380c84d7 100644 --- a/chrome/app/resources/google_chrome_strings_zh-HK.xtb +++ b/chrome/app/resources/google_chrome_strings_zh-HK.xtb
@@ -391,6 +391,7 @@ <translation id="5953954252731207958">由於最近沒有瀏覽記錄,Chrome 已移除<ph name="PERMISSION" />權限</translation> <translation id="5980111191913430208">來源不明的擴充程式、應用程式和主題可能會損害你的裝置。Chromium 建議你只透過「<ph name="IDS_EXTENSION_WEB_STORE_TITLE" />」安裝這些項目</translation> <translation id="6003112304606738118">正在下載… 剩餘 <ph name="HOURS" /> 小時</translation> +<translation id="6008161919456049856">你儲存在 Google 帳戶中的密碼、付款方法和地址將從此裝置中移除。如要再次在 Chrome 中使用這些資料,請重新登入。</translation> <translation id="6014316319780893079">透過 <ph name="BEGIN_LINK" />Chrome 工具<ph name="END_LINK" />,你可安全瀏覽網絡,一切盡在掌握</translation> <translation id="6022659036123304283">自訂屬於您的 Chrome</translation> <translation id="6025087594896450715">Google Chrome 將會在 <ph name="REMAINING_TIME" />後重新啟動</translation>
diff --git a/chrome/app/resources/google_chrome_strings_zh-TW.xtb b/chrome/app/resources/google_chrome_strings_zh-TW.xtb index 4c06d45..baa85cfd 100644 --- a/chrome/app/resources/google_chrome_strings_zh-TW.xtb +++ b/chrome/app/resources/google_chrome_strings_zh-TW.xtb
@@ -385,6 +385,7 @@ <translation id="5953954252731207958">由於近期沒有造訪記錄,Chrome 已移除「<ph name="PERMISSION" />」權限</translation> <translation id="5980111191913430208">來源不明的擴充功能、應用程式和主題可能會損害裝置。Chromium 建議你只透過 <ph name="IDS_EXTENSION_WEB_STORE_TITLE" />安裝這些項目</translation> <translation id="6003112304606738118">下載中… 還剩 <ph name="HOURS" /> 小時</translation> +<translation id="6008161919456049856">你儲存在 Google 帳戶中的密碼、付款方式和地址將從這部裝置中移除。如要在 Chrome 中再次使用這些資料,請重新登入。</translation> <translation id="6014316319780893079">Chrome 提供<ph name="BEGIN_LINK" />各種實用工具<ph name="END_LINK" />,你可以放心瀏覽網路,掌控一切設定</translation> <translation id="6022659036123304283">打造專屬的 Chrome</translation> <translation id="6025087594896450715">Google Chrome 將於 <ph name="REMAINING_TIME" /> 後重新啟動</translation>
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index ed1af89..925c234d 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -1788,7 +1788,6 @@ deps = [ ":active_use_util", ":browser_process", - ":dev_ui_browser_resources_grit", ":expired_flags_list", ":font_pref", ":global_features", @@ -8731,18 +8730,6 @@ } } -grit("dev_ui_browser_resources") { - source = "dev_ui_browser_resources.grd" - - defines = chrome_grit_defines - - output_dir = "$root_gen_dir/chrome" - outputs = [ - "grit/dev_ui_browser_resources.h", - "dev_ui_browser_resources.pak", - ] -} - action("expired_flags_list_gen") { script = "//tools/flags/generate_expired_list.py" sources = [ "flag-metadata.json" ]
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index e7a2bed..1acd68a 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -8290,6 +8290,12 @@ flag_descriptions::kOneTimePermissionDescription, kOsAll, FEATURE_VALUE_TYPE(permissions::features::kOneTimePermission)}, + {"permission-element", + flag_descriptions::kPageEmbeddedPermissionControlName, + flag_descriptions::kPageEmbeddedPermissionControlDescription, + kOsMac | kOsWin | kOsCrOS | kOsAndroid | kOsLinux, + FEATURE_VALUE_TYPE(blink::features::kPermissionElement)}, + {"left-hand-side-activity-indicators", flag_descriptions::kLeftHandSideActivityIndicatorsName, flag_descriptions::kLeftHandSideActivityIndicatorsDescription, kOsDesktop, @@ -9973,13 +9979,6 @@ flag_descriptions::kDesktopPWAsUserLinkCapturingScopeExtensionsDescription, kOsLinux | kOsMac | kOsWin, FEATURE_VALUE_TYPE(features::kPwaNavigationCapturingWithScopeExtensions)}, - - {"sync-enable-contact-info-data-type-in-transport-mode", - flag_descriptions::kSyncEnableContactInfoDataTypeInTransportModeName, - flag_descriptions:: - kSyncEnableContactInfoDataTypeInTransportModeDescription, - kOsLinux | kOsMac | kOsWin, - FEATURE_VALUE_TYPE(syncer::kSyncEnableContactInfoDataTypeInTransportMode)}, #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || \
diff --git a/chrome/browser/autofill/android/java/res/layout/payment_request_editor.xml b/chrome/browser/autofill/android/java/res/layout/payment_request_editor.xml index d10c44a..7368e87 100644 --- a/chrome/browser/autofill/android/java/res/layout/payment_request_editor.xml +++ b/chrome/browser/autofill/android/java/res/layout/payment_request_editor.xml
@@ -15,7 +15,8 @@ <org.chromium.chrome.browser.autofill.editors.EditorDialogToolbar android:id="@+id/action_bar" android:layout_width="match_parent" - android:layout_height="?attr/actionBarSize" + android:minHeight="?attr/actionBarSize" + android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentStart="true" android:layout_alignParentEnd="true"
diff --git a/chrome/browser/dev_ui_browser_resources.grd b/chrome/browser/dev_ui_browser_resources.grd deleted file mode 100644 index 1251da9..0000000 --- a/chrome/browser/dev_ui_browser_resources.grd +++ /dev/null
@@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -This file specifies browser resources for developer-facing chrome:// pages -(DevUI pages). This is needed by the Developer WebUI Dynamic Feature Module -(DevUI DFM) for Android Chrome. Details: -* User-facing resources should reside in browser_resources.grd. -* DevUI page resources that are *not* for Android Chrome can reside in - browser_resources.grd -* This file is the "miscellaneous" bin among DevUI pages; individual DevUI pages - (e.g., chrome://bluetooth-internals) can have their own GRD files. ---> -<grit latest_public_release="0" current_release="1" output_all_resource_defines="false"> - <outputs> - <output filename="grit/dev_ui_browser_resources.h" type="rc_header"> - <emit emit_type='prepend'></emit> - </output> - <output filename="dev_ui_browser_resources.pak" type="data_package" /> - </outputs> - <release seq="1"> - <includes> - <include name="IDR_TRANSLATE_INTERNALS_CSS" file="../../components/translate/translate_internals/translate_internals.css" type="BINDATA" /> - <include name="IDR_TRANSLATE_INTERNALS_HTML" file="../../components/translate/translate_internals/translate_internals.html" type="BINDATA" /> - <include name="IDR_TRANSLATE_INTERNALS_JS" file="../../components/translate/translate_internals/translate_internals.js" preprocess="true" type="BINDATA" /> - </includes> - </release> -</grit>
diff --git a/chrome/browser/educational_tip/java/src/org/chromium/chrome/browser/educational_tip/EducationalTipModuleBuilder.java b/chrome/browser/educational_tip/java/src/org/chromium/chrome/browser/educational_tip/EducationalTipModuleBuilder.java index 0b27eb278..7eacc6d9 100644 --- a/chrome/browser/educational_tip/java/src/org/chromium/chrome/browser/educational_tip/EducationalTipModuleBuilder.java +++ b/chrome/browser/educational_tip/java/src/org/chromium/chrome/browser/educational_tip/EducationalTipModuleBuilder.java
@@ -48,6 +48,11 @@ return false; } + if (mModuleType == ModuleType.TAB_GROUP_SYNC + && !ChromeFeatureList.sTabGroupPaneAndroid.isEnabled()) { + return false; + } + EducationalTipModuleCoordinator coordinator = new EducationalTipModuleCoordinator( mModuleType,
diff --git a/chrome/browser/educational_tip/junit/src/org/chromium/chrome/browser/educational_tip/EducationalTipModuleBuilderUnitTest.java b/chrome/browser/educational_tip/junit/src/org/chromium/chrome/browser/educational_tip/EducationalTipModuleBuilderUnitTest.java index 7218819..dd474333 100644 --- a/chrome/browser/educational_tip/junit/src/org/chromium/chrome/browser/educational_tip/EducationalTipModuleBuilderUnitTest.java +++ b/chrome/browser/educational_tip/junit/src/org/chromium/chrome/browser/educational_tip/EducationalTipModuleBuilderUnitTest.java
@@ -125,6 +125,36 @@ ChromeFeatureList.EDUCATIONAL_TIP_MODULE, ChromeFeatureList.SEGMENTATION_PLATFORM_EPHEMERAL_CARD_RANKER }) + @DisableFeatures({ChromeFeatureList.TAB_GROUP_PANE_ANDROID}) + public void testBuildEducationalTipTabGroupSyncModule_NotEligible() { + EducationalTipModuleBuilder moduleBuilderForTabGroupSync = + new EducationalTipModuleBuilder(ModuleType.TAB_GROUP_SYNC, mActionDelegate); + + assertFalse(moduleBuilderForTabGroupSync.build(mModuleDelegate, mBuildCallback)); + verify(mBuildCallback, never()).onResult(any(ModuleProvider.class)); + } + + @Test + @SmallTest + @EnableFeatures({ + ChromeFeatureList.EDUCATIONAL_TIP_MODULE, + ChromeFeatureList.SEGMENTATION_PLATFORM_EPHEMERAL_CARD_RANKER, + ChromeFeatureList.TAB_GROUP_PANE_ANDROID + }) + public void testBuildEducationalTipTabGroupSyncModule_Eligible() { + EducationalTipModuleBuilder moduleBuilderForTabGroupSync = + new EducationalTipModuleBuilder(ModuleType.TAB_GROUP_SYNC, mActionDelegate); + + assertTrue(moduleBuilderForTabGroupSync.build(mModuleDelegate, mBuildCallback)); + verify(mBuildCallback).onResult(any(ModuleProvider.class)); + } + + @Test + @SmallTest + @EnableFeatures({ + ChromeFeatureList.EDUCATIONAL_TIP_MODULE, + ChromeFeatureList.SEGMENTATION_PLATFORM_EPHEMERAL_CARD_RANKER + }) public void testCreateInputContext() { InputContext inputContextForTest = mModuleBuilder.createInputContext(); assertNotNull(
diff --git a/chrome/browser/enterprise/connectors/analysis/content_analysis_dialog.cc b/chrome/browser/enterprise/connectors/analysis/content_analysis_dialog.cc index 003dc79f..00b0aff 100644 --- a/chrome/browser/enterprise/connectors/analysis/content_analysis_dialog.cc +++ b/chrome/browser/enterprise/connectors/analysis/content_analysis_dialog.cc
@@ -18,6 +18,7 @@ #include "components/constrained_window/constrained_window_views.h" #include "components/strings/grit/components_strings.h" #include "components/vector_icons/vector_icons.h" +#include "components/web_modal/web_contents_modal_dialog_manager.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/web_contents.h" @@ -284,6 +285,20 @@ return; } + auto* manager = + web_modal::WebContentsModalDialogManager::FromWebContents(web_contents()); + if (!manager) { + // `manager` being null indicates that `web_contents()` doesn't correspond + // to a browser tab (ex: an extension background page reading the + // clipboard). In such a case, we don't show a dialog and instead simply + // accept/cancel the result immediately. See crbug.com/374120523 and + // crbug.com/388049470 for more context. + if (!is_pending()) { + CancelButtonCallback(); + } + return; + } + // If the web contents is still valid when the delay timer goes off and the // dialog has not yet been shown, show it now. if (web_contents() && !contents_view_) {
diff --git a/chrome/browser/enterprise/connectors/analysis/content_analysis_dialog_browsertest.cc b/chrome/browser/enterprise/connectors/analysis/content_analysis_dialog_browsertest.cc index cf23f05d6..190fce9 100644 --- a/chrome/browser/enterprise/connectors/analysis/content_analysis_dialog_browsertest.cc +++ b/chrome/browser/enterprise/connectors/analysis/content_analysis_dialog_browsertest.cc
@@ -22,12 +22,15 @@ #include "chrome/browser/enterprise/connectors/test/fake_content_analysis_delegate.h" #include "chrome/browser/safe_browsing/cloud_content_scanning/deep_scanning_utils.h" #include "chrome/browser/ui/browser.h" +#include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/test/test_browser_dialog.h" +#include "chrome/browser/ui/webui/chrome_web_contents_handler.h" #include "chrome/grit/generated_resources.h" #include "chrome/grit/theme_resources.h" #include "components/download/public/common/mock_download_item.h" #include "components/enterprise/common/proto/connectors.pb.h" #include "components/prefs/scoped_user_pref_update.h" +#include "components/web_modal/web_contents_modal_dialog_manager.h" #include "content/public/browser/web_contents_observer.h" #include "content/public/test/browser_test.h" #include "content/public/test/browser_test_utils.h" @@ -39,8 +42,10 @@ #include "ui/views/controls/image_view.h" #include "ui/views/controls/textarea/textarea.h" #include "ui/views/controls/throbber.h" +#include "ui/views/controls/webview/web_dialog_view.h" #include "ui/views/test/ax_event_counter.h" #include "ui/views/test/views_test_utils.h" +#include "ui/web_dialogs/test/test_web_dialog_delegate.h" namespace enterprise_connectors { @@ -275,7 +280,34 @@ base::TimeDelta response_delay() const { return std::get<2>(GetParam()); } + void SetUpOnMainThread() override { + ui::test::TestWebDialogDelegate* delegate = + new ui::test::TestWebDialogDelegate(GURL(url::kAboutBlankURL)); + + auto view = std::make_unique<views::WebDialogView>( + browser()->profile(), delegate, + std::make_unique<ChromeWebContentsHandler>()); + view->SetOwnedByWidget(true); + gfx::NativeView parent_view = + browser()->tab_strip_model()->GetActiveWebContents()->GetNativeView(); + view_ = view.get(); + view_tracker_.SetView(view_); + + auto* widget = + views::Widget::CreateWindowWithParent(std::move(view), parent_view); + widget->Show(); + + EXPECT_TRUE(content::WaitForLoadStop(view_->web_contents())); + } + + content::WebContents* GetWebViewDialogContents() { + return view_->web_contents(); + } + private: + views::ViewTracker view_tracker_; + raw_ptr<views::WebDialogView, DisableDanglingPtrDetection> view_ = nullptr; + raw_ptr<ContentAnalysisDialog, DanglingUntriaged> dialog_; base::TimeTicks ctor_called_timestamp_; @@ -589,6 +621,43 @@ EXPECT_TRUE(called); } +IN_PROC_BROWSER_TEST_P(ContentAnalysisDialogBehaviorBrowserTest, + NoWebContentsModalDialogManager) { + base::ScopedAllowBlockingForTesting allow_blocking; + + // Setup policies to enable deep scanning, its UI and the responses to be + // simulated. + enterprise_connectors::test::SetAnalysisConnector( + browser()->profile()->GetPrefs(), FILE_ATTACHED, + kBlockingScansForDlpAndMalware); + SetStatusCallbackResponse( + safe_browsing::SimpleContentAnalysisResponseForTesting( + dlp_success(), malware_success(), /*has_custom_rule_message=*/false)); + + // Set up delegate test values. + test::FakeContentAnalysisDelegate::SetResponseDelay(response_delay()); + SetUpDelegate(); + + base::RunLoop run_loop; + ContentAnalysisDelegate::Data data; + CreateFilesForTest({"foo.doc"}, {"content"}, &data); + ASSERT_TRUE(ContentAnalysisDelegate::IsEnabled( + browser()->profile(), GURL(kTestUrl), &data, + enterprise_connectors::AnalysisConnector::FILE_ATTACHED)); + + ContentAnalysisDelegate::CreateForWebContents( + GetWebViewDialogContents(), std::move(data), + base::BindOnce( + [](base::OnceClosure quit_closure, + const ContentAnalysisDelegate::Data& data, + ContentAnalysisDelegate::Result& result) { + std::move(quit_closure).Run(); + }, + run_loop.QuitClosure()), + safe_browsing::DeepScanAccessPoint::UPLOAD); + run_loop.Run(); +} + // The scan type controls if DLP, malware or both are enabled via policies. The // dialog currently behaves identically in all 3 cases, so this parameter // ensures this assumption is not broken by new code.
diff --git a/chrome/browser/extensions/api/autofill_private/autofill_private_api.cc b/chrome/browser/extensions/api/autofill_private/autofill_private_api.cc index 68c9192..747640a9 100644 --- a/chrome/browser/extensions/api/autofill_private/autofill_private_api.cc +++ b/chrome/browser/extensions/api/autofill_private/autofill_private_api.cc
@@ -156,15 +156,14 @@ } autofill::AutofillProfile CreateNewAutofillProfile( - autofill::PersonalDataManager& personal_data, + const autofill::AddressDataManager& adm, std::optional<std::string_view> country_code) { autofill::AutofillProfile::RecordType record_type = - personal_data.address_data_manager().IsEligibleForAddressAccountStorage() + adm.IsEligibleForAddressAccountStorage() ? autofill::AutofillProfile::RecordType::kAccount : autofill::AutofillProfile::RecordType::kLocalOrSyncable; if (country_code && - !personal_data.address_data_manager().IsCountryEligibleForAccountStorage( - country_code.value())) { + !adm.IsCountryEligibleForAccountStorage(country_code.value())) { // Note: addresses from unsupported countries can't be saved in account. // TODO(crbug.com/40263955): remove temporary unsupported countries // filtering. @@ -199,7 +198,7 @@ } std::optional<api::autofill_private::AccountInfo> account_info = - autofill_util::GetAccountInfo(personal_data); + autofill_util::GetAccountInfo(personal_data.address_data_manager()); if (account_info.has_value()) { return RespondNow( ArgumentList(api::autofill_private::GetAccountInfo::Results::Create( @@ -253,8 +252,10 @@ country_code = it->value; } autofill::AutofillProfile profile = - existing_profile ? *existing_profile - : CreateNewAutofillProfile(personal_data, country_code); + existing_profile + ? *existing_profile + : CreateNewAutofillProfile(personal_data.address_data_manager(), + country_code); for (const api::autofill_private::AddressField& field : address->fields) { std::u16string trimmed_value; @@ -311,7 +312,8 @@ autofill_util::CountryEntryList country_list = autofill_util::GenerateCountryList( - personal_data, parameters->for_account_address_profile); + personal_data.address_data_manager(), + parameters->for_account_address_profile); return RespondNow(ArgumentList( api::autofill_private::GetCountryList::Results::Create(country_list))); @@ -372,7 +374,7 @@ } autofill_util::AddressEntryList address_list = - autofill_util::GenerateAddressList(personal_data); + autofill_util::GenerateAddressList(personal_data.address_data_manager()); return RespondNow(ArgumentList( api::autofill_private::GetAddressList::Results::Create(address_list))); } @@ -565,7 +567,8 @@ } autofill_util::CreditCardEntryList credit_card_list = - autofill_util::GenerateCreditCardList(personal_data); + autofill_util::GenerateCreditCardList( + personal_data.payments_data_manager()); return RespondNow( ArgumentList(api::autofill_private::GetCreditCardList::Results::Create( credit_card_list))); @@ -752,7 +755,7 @@ } autofill_util::IbanEntryList iban_list = - autofill_util::GenerateIbanList(personal_data); + autofill_util::GenerateIbanList(personal_data.payments_data_manager()); return RespondNow(ArgumentList( api::autofill_private::GetIbanList::Results::Create(iban_list))); } @@ -1016,7 +1019,7 @@ parameters->guid)) { return Respond(ArgumentList(autofill_private::GetLocalCard::Results::Create( autofill_util::CreditCardToCreditCardEntry( - *card_from_guid, personal_data_manager, + *card_from_guid, personal_data_manager.payments_data_manager(), /*mask_local_cards=*/false)))); } return Respond(Error(kErrorCardDataUnavailable));
diff --git a/chrome/browser/extensions/api/autofill_private/autofill_private_event_router.cc b/chrome/browser/extensions/api/autofill_private/autofill_private_event_router.cc index 36f6cbd..cf8cdce 100644 --- a/chrome/browser/extensions/api/autofill_private/autofill_private_event_router.cc +++ b/chrome/browser/extensions/api/autofill_private/autofill_private_event_router.cc
@@ -93,16 +93,20 @@ return; autofill_util::AddressEntryList addressList = - extensions::autofill_util::GenerateAddressList(*personal_data_); + extensions::autofill_util::GenerateAddressList( + personal_data_->address_data_manager()); autofill_util::CreditCardEntryList creditCardList = - extensions::autofill_util::GenerateCreditCardList(*personal_data_); + extensions::autofill_util::GenerateCreditCardList( + personal_data_->payments_data_manager()); autofill_util::IbanEntryList ibanList = - extensions::autofill_util::GenerateIbanList(*personal_data_); + extensions::autofill_util::GenerateIbanList( + personal_data_->payments_data_manager()); std::optional<api::autofill_private::AccountInfo> account_info = - extensions::autofill_util::GetAccountInfo(*personal_data_); + extensions::autofill_util::GetAccountInfo( + personal_data_->address_data_manager()); base::Value::List args; args.Append(ToValueList(addressList));
diff --git a/chrome/browser/extensions/api/autofill_private/autofill_util.cc b/chrome/browser/extensions/api/autofill_private/autofill_util.cc index 3e8d31a..1dd3d841 100644 --- a/chrome/browser/extensions/api/autofill_private/autofill_util.cc +++ b/chrome/browser/extensions/api/autofill_private/autofill_util.cc
@@ -10,6 +10,7 @@ #include <utility> #include <vector> +#include "base/containers/to_vector.h" #include "base/memory/raw_ptr.h" #include "base/strings/string_split.h" #include "base/strings/utf_string_conversions.h" @@ -154,9 +155,7 @@ : "chrome://theme/IDR_AUTOFILL_CC_GENERIC"; } -autofill_private::IbanEntry IbanToIbanEntry( - const autofill::Iban& iban, - const autofill::PersonalDataManager& personal_data) { +autofill_private::IbanEntry IbanToIbanEntry(const autofill::Iban& iban) { autofill_private::IbanEntry iban_entry; // Populated IBAN fields need to be converted to an `IbanEntry` to be rendered @@ -186,10 +185,9 @@ namespace extensions::autofill_util { -AddressEntryList GenerateAddressList( - const autofill::PersonalDataManager& personal_data) { +AddressEntryList GenerateAddressList(const autofill::AddressDataManager& adm) { const std::vector<const autofill::AutofillProfile*>& profiles = - personal_data.address_data_manager().GetProfilesForSettings(); + adm.GetProfilesForSettings(); // TODO(crbug.com/40283168): Replace by `profiles`. std::vector<std::u16string> labels = autofill::AutofillProfile::CreateDifferentiatingLabels( @@ -200,6 +198,7 @@ DCHECK_EQ(labels.size(), profiles.size()); AddressEntryList list; + list.reserve(profiles.size()); for (size_t i = 0; i < profiles.size(); ++i) { list.push_back(ProfileToAddressEntry(*profiles[i], labels[i])); } @@ -207,18 +206,15 @@ return list; } -CountryEntryList GenerateCountryList( - const autofill::PersonalDataManager& personal_data, - bool for_account_address_profile) { +CountryEntryList GenerateCountryList(const autofill::AddressDataManager& adm, + bool for_account_address_profile) { autofill::CountryComboboxModel model; - model.SetCountries(personal_data, - base::RepeatingCallback<bool(const std::string&)>(), + model.SetCountries(adm, base::RepeatingCallback<bool(const std::string&)>(), ExtensionsBrowserClient::Get()->GetApplicationLocale()); const std::vector<std::unique_ptr<autofill::AutofillCountry>>& countries = model.countries(); CountryEntryList list; - for (const auto& country : countries) { // A null |country| means "insert a space here", so we add a country w/o a // |name| or |country_code| to the list and let the UI handle it. @@ -227,8 +223,7 @@ continue; } if (!for_account_address_profile || - personal_data.address_data_manager().IsCountryEligibleForAccountStorage( - country->country_code())) { + adm.IsCountryEligibleForAccountStorage(country->country_code())) { api::autofill_private::CountryEntry& entry = list.emplace_back(); entry.name = base::UTF16ToUTF8(country->name()); entry.country_code = country->country_code(); @@ -239,34 +234,22 @@ } CreditCardEntryList GenerateCreditCardList( - const autofill::PersonalDataManager& personal_data) { - const std::vector<const autofill::CreditCard*>& cards = - personal_data.payments_data_manager().GetCreditCards(); - - CreditCardEntryList list; - for (const autofill::CreditCard* card : cards) { - list.push_back(CreditCardToCreditCardEntry(*card, personal_data, - /*mask_local_cards=*/true)); - } - - return list; + const autofill::PaymentsDataManager& paydm) { + return base::ToVector( + paydm.GetCreditCards(), [&paydm](const autofill::CreditCard* card) { + return CreditCardToCreditCardEntry(*card, paydm, + /*mask_local_cards=*/true); + }); } -IbanEntryList GenerateIbanList( - const autofill::PersonalDataManager& personal_data) { - IbanEntryList list; - for (const autofill::Iban* iban : - personal_data.payments_data_manager().GetIbans()) { - list.push_back(IbanToIbanEntry(*iban, personal_data)); - } - - return list; +IbanEntryList GenerateIbanList(const autofill::PaymentsDataManager& paydm) { + return base::ToVector(paydm.GetIbans(), [](const autofill::Iban* iban) { + return IbanToIbanEntry(*iban); + }); } std::optional<api::autofill_private::AccountInfo> GetAccountInfo( - const autofill::PersonalDataManager& personal_data) { - const autofill::AddressDataManager& adm = - personal_data.address_data_manager(); + const autofill::AddressDataManager& adm) { std::optional<CoreAccountInfo> account = adm.GetPrimaryAccountInfo(); if (!account.has_value()) { return std::nullopt; @@ -287,7 +270,7 @@ autofill_private::CreditCardEntry CreditCardToCreditCardEntry( const autofill::CreditCard& credit_card, - const autofill::PersonalDataManager& personal_data, + const autofill::PaymentsDataManager& paydm, bool mask_local_cards) { autofill_private::CreditCardEntry card; @@ -319,13 +302,11 @@ card.nickname = base::UTF16ToUTF8(credit_card.nickname()); } const gfx::Image* card_art_image = - personal_data.payments_data_manager().GetCachedCardArtImageForUrl( - credit_card.card_art_url()); + paydm.GetCachedCardArtImageForUrl(credit_card.card_art_url()); card.image_src = card_art_image ? webui::GetBitmapDataUrl(card_art_image->AsBitmap()) : CardNetworkToIconResourceIdString(credit_card.network()); - if (personal_data.payments_data_manager().IsCardEligibleForBenefits( - credit_card) && + if (paydm.IsCardEligibleForBenefits(credit_card) && credit_card.product_terms_url().is_valid()) { card.product_terms_url = credit_card.product_terms_url().spec(); } @@ -340,10 +321,9 @@ credit_card.record_type() == autofill::CreditCard::RecordType::kLocalCard; // IsValid() checks if both card number and expiration date are valid. // IsServerCard() checks whether there is a duplicated server card in - // |personal_data|. + // `paydm`. card.metadata->is_migratable = - credit_card.IsValid() && - !personal_data.payments_data_manager().IsServerCard(&credit_card); + credit_card.IsValid() && !paydm.IsServerCard(&credit_card); card.metadata->is_virtual_card_enrollment_eligible = credit_card.virtual_card_enrollment_state() == autofill::CreditCard::VirtualCardEnrollmentState::kEnrolled ||
diff --git a/chrome/browser/extensions/api/autofill_private/autofill_util.h b/chrome/browser/extensions/api/autofill_private/autofill_util.h index 8752bea..d545eb2 100644 --- a/chrome/browser/extensions/api/autofill_private/autofill_util.h +++ b/chrome/browser/extensions/api/autofill_private/autofill_util.h
@@ -11,12 +11,15 @@ #include "base/functional/callback_forward.h" #include "chrome/common/extensions/api/autofill_private.h" -#include "components/autofill/core/browser/data_manager/personal_data_manager.h" #include "components/device_reauth/device_authenticator.h" -namespace extensions { +namespace autofill { +class AddressDataManager; +class CreditCard; +class PaymentsDataManager; +} // namespace autofill -namespace autofill_util { +namespace extensions::autofill_util { using AddressEntryList = std::vector<api::autofill_private::AddressEntry>; using CountryEntryList = std::vector<api::autofill_private::CountryEntry>; @@ -24,40 +27,35 @@ using IbanEntryList = std::vector<api::autofill_private::IbanEntry>; using CallbackAfterSuccessfulUserAuth = base::OnceCallback<void(bool)>; -// Uses |personal_data| to generate a list of up-to-date AddressEntry objects. -AddressEntryList GenerateAddressList( - const autofill::PersonalDataManager& personal_data); +// Uses `adm` to generate a list of up-to-date AddressEntry objects. +AddressEntryList GenerateAddressList(const autofill::AddressDataManager& adm); -// Uses `personal_data` to generate a list of up-to-date CountryEntry objects. +// Uses `adm` to generate a list of up-to-date CountryEntry objects. // Depending on the `for_account_address_profile` and // `AutofillEnableAccountStorageForIneligibleCountries`, unsupported countries // are filtered from the resulting list. -CountryEntryList GenerateCountryList( - const autofill::PersonalDataManager& personal_data, - bool for_account_address_profile); +CountryEntryList GenerateCountryList(const autofill::AddressDataManager& adm, + bool for_account_address_profile); -// Uses |personal_data| to generate a list of up-to-date CreditCardEntry +// Uses `paydm` to generate a list of up-to-date CreditCardEntry // objects. CreditCardEntryList GenerateCreditCardList( - const autofill::PersonalDataManager& personal_data); + const autofill::PaymentsDataManager& paydm); -// Uses |personal_data| to generate a list of up-to-date IbanEntry +// Uses `paydm` to generate a list of up-to-date IbanEntry // objects. -IbanEntryList GenerateIbanList( - const autofill::PersonalDataManager& personal_data); +IbanEntryList GenerateIbanList(const autofill::PaymentsDataManager& paydm); -// Uses |personal_data| to get primary account info. +// Uses `adm` to get primary account info. std::optional<api::autofill_private::AccountInfo> GetAccountInfo( - const autofill::PersonalDataManager& personal_data); + const autofill::AddressDataManager& adm); // Returns a `CreditCardEntry` object which is UI compatible. api::autofill_private::CreditCardEntry CreditCardToCreditCardEntry( const autofill::CreditCard& credit_card, - const autofill::PersonalDataManager& personal_data, + const autofill::PaymentsDataManager& paydm, bool mask_local_cards); -} // namespace autofill_util - -} // namespace extensions +} // namespace extensions::autofill_util #endif // CHROME_BROWSER_EXTENSIONS_API_AUTOFILL_PRIVATE_AUTOFILL_UTIL_H_
diff --git a/chrome/browser/extensions/api/autofill_private/autofill_util_unittest.cc b/chrome/browser/extensions/api/autofill_private/autofill_util_unittest.cc index 41f5522..1c1ff52d 100644 --- a/chrome/browser/extensions/api/autofill_private/autofill_util_unittest.cc +++ b/chrome/browser/extensions/api/autofill_private/autofill_util_unittest.cc
@@ -9,6 +9,7 @@ #include "base/functional/callback_forward.h" #include "base/test/mock_callback.h" #include "chrome/test/base/in_process_browser_test.h" +#include "components/autofill/core/browser/data_manager/payments/test_payments_data_manager.h" #include "components/autofill/core/browser/data_manager/test_personal_data_manager.h" #include "components/autofill/core/browser/test_utils/autofill_test_utils.h" #include "components/autofill/core/common/autofill_test_utils.h" @@ -16,19 +17,21 @@ #include "content/public/test/browser_task_environment.h" #include "content/public/test/browser_test.h" -using testing::Return; -using ::testing::UnorderedElementsAre; - namespace extensions::autofill_util { +namespace { + +using ::testing::_; +using ::testing::Return; +using ::testing::UnorderedElementsAre; +using MockCallbackAfterSuccessfulUserAuth = + base::MockCallback<CallbackAfterSuccessfulUserAuth>; + MATCHER_P(MatchesIbanType, iban, "") { bool is_local = iban.record_type() == autofill::Iban::RecordType::kLocalIban; return arg.metadata->is_local == is_local; } -using MockCallbackAfterSuccessfulUserAuth = - base::MockCallback<CallbackAfterSuccessfulUserAuth>; - class AutofillUtilTest : public InProcessBrowserTest { public: AutofillUtilTest() = default; @@ -48,17 +51,15 @@ }; IN_PROC_BROWSER_TEST_F(AutofillUtilTest, GenerateIbanList) { - autofill::TestPersonalDataManager personal_data; - personal_data.test_payments_data_manager().SetAutofillWalletImportEnabled( - true); + autofill::TestPaymentsDataManager paydm; + paydm.SetAutofillWalletImportEnabled(true); autofill::Iban local_iban = autofill::test::GetLocalIban(); - personal_data.test_payments_data_manager().AddIbanForTest( - std::make_unique<autofill::Iban>(local_iban)); + paydm.AddIbanForTest(std::make_unique<autofill::Iban>(local_iban)); autofill::Iban server_iban = autofill::test::GetServerIban(); - personal_data.test_payments_data_manager().AddServerIban(server_iban); + paydm.AddServerIban(server_iban); - IbanEntryList iban_list = GenerateIbanList(personal_data); + IbanEntryList iban_list = GenerateIbanList(paydm); EXPECT_THAT(iban_list, UnorderedElementsAre(MatchesIbanType(local_iban), MatchesIbanType(server_iban))); } @@ -75,8 +76,7 @@ })); EXPECT_CALL(mock_result_callback, Run(true)); EXPECT_CALL(*mock_device_authenticator_, - AuthenticateWithMessage(mock_prompt_message, testing::_)) - .Times(1); + AuthenticateWithMessage(mock_prompt_message, _)); mock_device_authenticator_->AuthenticateWithMessage( mock_prompt_message, mock_result_callback.Get()); @@ -95,12 +95,13 @@ })); EXPECT_CALL(mock_result_callback, Run(false)); EXPECT_CALL(*mock_device_authenticator_, - AuthenticateWithMessage(mock_prompt_message, testing::_)) - .Times(1); + AuthenticateWithMessage(mock_prompt_message, _)); mock_device_authenticator_->AuthenticateWithMessage( mock_prompt_message, mock_result_callback.Get()); #endif } +} // namespace + } // namespace extensions::autofill_util
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index 0623cae..d037af0b 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -6810,6 +6810,15 @@ "expiry_milestone": 135 }, { + "name": "permission-element", + "owners": [ + "andy@chromium.org", + "tungnh@chromium.org", + "//components/permissions/PERMISSIONS_OWNERS" + ], + "expiry_milestone": 144 + }, + { "name": "permission-predictions-v3", "owners": [ "elklm@chromium.org",
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index 805c9e24..ca6e75a3 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -2860,6 +2860,12 @@ const char kPageContentAnnotationsRemotePageMetadataDescription[] = "Enables fetching of page load metadata to be persisted on-device."; +const char kPageEmbeddedPermissionControlName[] = + "Page embedded permission control (permission element)"; +const char kPageEmbeddedPermissionControlDescription[] = + "Enables the Page Embedded Permission Control feature, which allows the " + "use of the HTML 'permission' element."; + const char kPageImageServiceOptimizationGuideSalientImagesName[] = "Page Image Service - Optimization Guide Salient Images"; const char kPageImageServiceOptimizationGuideSalientImagesDescription[] = @@ -7960,12 +7966,6 @@ const char kSyncEnableBookmarksInTransportModeDescription[] = "Enables account bookmarks for signed-in non-syncing users"; -const char kSyncEnableContactInfoDataTypeInTransportModeName[] = - "Sync Enable Contact Info Data Type in Transport Mode"; -const char kSyncEnableContactInfoDataTypeInTransportModeDescription[] = - "Allows the 'Sync Enable Contact Info Data Type in Transport Mode' feature " - "to be used with the 'Explicit Browser Signin UI On Desktop' feature."; - const char kEnableGenericOidcAuthProfileManagementName[] = "Enable generic OIDC profile management"; const char kEnableGenericOidcAuthProfileManagementDescription[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index 729fba5a..a352cda 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -1634,6 +1634,9 @@ extern const char kPageContentAnnotationsName[]; extern const char kPageContentAnnotationsDescription[]; +extern const char kPageEmbeddedPermissionControlName[]; +extern const char kPageEmbeddedPermissionControlDescription[]; + extern const char kPageContentAnnotationsPersistSalientImageMetadataName[]; extern const char kPageContentAnnotationsPersistSalientImageMetadataDescription[]; @@ -4700,9 +4703,6 @@ extern const char kSyncEnableBookmarksInTransportModeName[]; extern const char kSyncEnableBookmarksInTransportModeDescription[]; -extern const char kSyncEnableContactInfoDataTypeInTransportModeName[]; -extern const char kSyncEnableContactInfoDataTypeInTransportModeDescription[]; - extern const char kEnableGenericOidcAuthProfileManagementName[]; extern const char kEnableGenericOidcAuthProfileManagementDescription[]; #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc index bd430d28..eb5bf8a 100644 --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc
@@ -408,7 +408,6 @@ &sync_sessions::kOptimizeAssociateWindowsAndroid, &syncer::kEnableBatchUploadFromSettings, &syncer::kReplaceSyncPromosWithSignInPromos, - &syncer::kSyncEnableContactInfoDataTypeInTransportMode, &syncer::kWebApkBackupAndRestoreBackend, &syncer::kUnoPhase2FollowUp, &tab_groups::kTabGroupSyncAndroid,
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java index d49f9da..f7f9f0fd 100644 --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
@@ -520,8 +520,6 @@ public static final String SUPPRESS_TOOLBAR_CAPTURES_AT_GESTURE_END = "SuppressToolbarCapturesAtGestureEnd"; public static final String ENABLE_BATCH_UPLOAD_FROM_SETTINGS = "EnableBatchUploadFromSettings"; - public static final String SYNC_ENABLE_CONTACT_INFO_DATA_TYPE_IN_TRANSPORT_MODE = - "SyncEnableContactInfoDataTypeInTransportMode"; public static final String TAB_DRAG_DROP_ANDROID = "TabDragDropAndroid"; public static final String TAB_GROUP_CREATION_DIALOG_ANDROID = "TabGroupCreationDialogAndroid"; public static final String TAB_GROUP_PANE_ANDROID = "TabGroupPaneAndroid";
diff --git a/chrome/browser/page_info/web_view_side_panel_throttle.cc b/chrome/browser/page_info/web_view_side_panel_throttle.cc index 298f0f9..c189e11 100644 --- a/chrome/browser/page_info/web_view_side_panel_throttle.cc +++ b/chrome/browser/page_info/web_view_side_panel_throttle.cc
@@ -16,6 +16,28 @@ const char kWebViewSidePanelWebContentsUserDataKey[] = "web_view_side_panel_web_contents_user_data"; +namespace { + +bool CanNavigateInPanel(content::NavigationHandle* handle, + const GURL& observed_url, + const GURL& next_url) { + // Server redirects of the observed_url URL are allowed to stay in the + // SidePanel. + const GURL& original_url = handle->GetRedirectChain().front(); + if (handle->WasServerRedirect() && original_url == observed_url) { + return true; + } + // Same URL navigations are allowed to stay in the SidePanel. + const GURL& current_url = handle->GetWebContents()->GetURL(); + if (next_url == current_url) { + return true; + } + + return false; +} + +} // namespace + WebViewSidePanelWebContentsUserData::WebViewSidePanelWebContentsUserData( base::WeakPtr<Delegate> delegate) : delegate_(delegate) {} @@ -31,27 +53,33 @@ kWebViewSidePanelWebContentsUserDataKey)) { return nullptr; } + const GURL& observed_url = handle->GetURL(); return std::make_unique<navigation_interception::InterceptNavigationThrottle>( - handle, base::BindRepeating([](content::NavigationHandle* handle) { - DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - auto* data = static_cast<WebViewSidePanelWebContentsUserData*>( - handle->GetWebContents()->GetUserData( - kWebViewSidePanelWebContentsUserDataKey)); - // The delegate is stored in a WeakPtr. Check if it is still there. - if (!data->delegate()) - return true; - if (data->delegate()->IsNavigationAllowed( - handle->GetURL(), handle->GetWebContents()->GetURL())) - return false; + handle, + base::BindRepeating( + [](const GURL& observed_url, content::NavigationHandle* handle) { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + auto* data = static_cast<WebViewSidePanelWebContentsUserData*>( + handle->GetWebContents()->GetUserData( + kWebViewSidePanelWebContentsUserDataKey)); + // The delegate is stored in a WeakPtr. Check if it is still there. + if (!data->delegate()) { + return true; + } + const GURL& next_url = handle->GetURL(); + if (CanNavigateInPanel(handle, observed_url, next_url)) { + return false; + } - content::OpenURLParams params( - handle->GetURL(), content::Referrer(handle->GetReferrer()), - WindowOpenDisposition::NEW_FOREGROUND_TAB, - handle->GetPageTransition(), handle->IsRendererInitiated()); - params.initiator_origin = handle->GetInitiatorOrigin(); - params.initiator_base_url = handle->GetInitiatorBaseUrl(); - data->delegate()->OpenUrlInBrowser(params); - return true; - }), + content::OpenURLParams params( + next_url, content::Referrer(handle->GetReferrer()), + WindowOpenDisposition::NEW_FOREGROUND_TAB, + handle->GetPageTransition(), handle->IsRendererInitiated()); + params.initiator_origin = handle->GetInitiatorOrigin(); + params.initiator_base_url = handle->GetInitiatorBaseUrl(); + data->delegate()->OpenUrlInBrowser(params); + return true; + }, + observed_url), navigation_interception::SynchronyMode::kSync); }
diff --git a/chrome/browser/page_info/web_view_side_panel_throttle.h b/chrome/browser/page_info/web_view_side_panel_throttle.h index b464c7ccc..b7f3137 100644 --- a/chrome/browser/page_info/web_view_side_panel_throttle.h +++ b/chrome/browser/page_info/web_view_side_panel_throttle.h
@@ -28,8 +28,6 @@ class Delegate { public: virtual void OpenUrlInBrowser(const content::OpenURLParams& params) = 0; - virtual bool IsNavigationAllowed(const GURL& new_url, - const GURL& old_url) = 0; }; explicit WebViewSidePanelWebContentsUserData(base::WeakPtr<Delegate> delegate);
diff --git a/chrome/browser/password_manager/android/password_store_android_account_backend.cc b/chrome/browser/password_manager/android/password_store_android_account_backend.cc index dd87c79..3ac8e28b 100644 --- a/chrome/browser/password_manager/android/password_store_android_account_backend.cc +++ b/chrome/browser/password_manager/android/password_store_android_account_backend.cc
@@ -175,16 +175,6 @@ std::move(callback)); } -void PasswordStoreAndroidAccountBackend::GetAllLoginsForAccountAsync( - std::string account, - LoginsOrErrorReply callback) { - CHECK(!account.empty()); - // This method is only used before the store split, to migrate non-syncable - // data back to the built-in backend after password sync turns off. - CHECK(!password_manager::UsesSplitStoresAndUPMForLocal(prefs())); - GetAllLoginsInternal(std::move(account), std::move(callback)); -} - void PasswordStoreAndroidAccountBackend::FillMatchingLoginsAsync( LoginsOrErrorReply callback, bool include_psl,
diff --git a/chrome/browser/password_manager/android/password_store_android_account_backend.h b/chrome/browser/password_manager/android/password_store_android_account_backend.h index 179dd618..5dde4bfb 100644 --- a/chrome/browser/password_manager/android/password_store_android_account_backend.h +++ b/chrome/browser/password_manager/android/password_store_android_account_backend.h
@@ -52,8 +52,6 @@ void GetAllLoginsWithAffiliationAndBrandingAsync( LoginsOrErrorReply callback) override; void GetAutofillableLoginsAsync(LoginsOrErrorReply callback) override; - void GetAllLoginsForAccountAsync(std::string account, - LoginsOrErrorReply callback) override; void FillMatchingLoginsAsync( LoginsOrErrorReply callback, bool include_psl,
diff --git a/chrome/browser/password_manager/android/password_store_android_account_backend_unittest.cc b/chrome/browser/password_manager/android/password_store_android_account_backend_unittest.cc index 4868fbc..31201479 100644 --- a/chrome/browser/password_manager/android/password_store_android_account_backend_unittest.cc +++ b/chrome/browser/password_manager/android/password_store_android_account_backend_unittest.cc
@@ -460,24 +460,6 @@ RunUntilIdle(); } -TEST_F(PasswordStoreAndroidAccountBackendTest, CallsBridgeForLoginsForAccount) { - backend().InitBackend( - /*affiliated_match_helper=*/nullptr, - PasswordStoreAndroidAccountBackend::RemoteChangesReceived(), - base::NullCallback(), base::DoNothing()); - backend().OnSyncServiceInitialized(sync_service()); - base::MockCallback<LoginsOrErrorReply> mock_reply; - EXPECT_CALL(*bridge_helper(), GetAllLogins).WillOnce(Return(kJobId)); - std::string account = "mytestemail@gmail.com"; - backend().GetAllLoginsForAccountAsync(account, mock_reply.Get()); - - EXPECT_CALL( - mock_reply, - Run(VariantWith<LoginsResult>(ElementsAreArray(CreateTestLogins())))); - consumer().OnCompleteWithLogins(kJobId, CreateTestLogins()); - RunUntilIdle(); -} - TEST_F(PasswordStoreAndroidAccountBackendTest, CallsBridgeForRemoveLogin) { EnableSyncForTestAccount(); backend().InitBackend(
diff --git a/chrome/browser/password_manager/android/password_store_android_local_backend.cc b/chrome/browser/password_manager/android/password_store_android_local_backend.cc index f261193d..3fc5fb7 100644 --- a/chrome/browser/password_manager/android/password_store_android_local_backend.cc +++ b/chrome/browser/password_manager/android/password_store_android_local_backend.cc
@@ -78,12 +78,6 @@ GetAutofillableLoginsInternal(std::string(), std::move(callback)); } -void PasswordStoreAndroidLocalBackend::GetAllLoginsForAccountAsync( - std::string account, - LoginsOrErrorReply callback) { - NOTREACHED(); -} - void PasswordStoreAndroidLocalBackend::FillMatchingLoginsAsync( LoginsOrErrorReply callback, bool include_psl,
diff --git a/chrome/browser/password_manager/android/password_store_android_local_backend.h b/chrome/browser/password_manager/android/password_store_android_local_backend.h index 58d1ec2..0c3fa5c 100644 --- a/chrome/browser/password_manager/android/password_store_android_local_backend.h +++ b/chrome/browser/password_manager/android/password_store_android_local_backend.h
@@ -46,8 +46,6 @@ void GetAllLoginsWithAffiliationAndBrandingAsync( LoginsOrErrorReply callback) override; void GetAutofillableLoginsAsync(LoginsOrErrorReply callback) override; - void GetAllLoginsForAccountAsync(std::string account, - LoginsOrErrorReply callback) override; void FillMatchingLoginsAsync( LoginsOrErrorReply callback, bool include_psl,
diff --git a/chrome/browser/password_manager/android/password_store_backend_migration_decorator.cc b/chrome/browser/password_manager/android/password_store_backend_migration_decorator.cc index c7836a8..e58c54a 100644 --- a/chrome/browser/password_manager/android/password_store_backend_migration_decorator.cc +++ b/chrome/browser/password_manager/android/password_store_backend_migration_decorator.cc
@@ -120,12 +120,6 @@ active_backend()->GetAutofillableLoginsAsync(std::move(callback)); } -void PasswordStoreBackendMigrationDecorator::GetAllLoginsForAccountAsync( - std::string account, - LoginsOrErrorReply callback) { - NOTREACHED(); -} - void PasswordStoreBackendMigrationDecorator::FillMatchingLoginsAsync( LoginsOrErrorReply callback, bool include_psl,
diff --git a/chrome/browser/password_manager/android/password_store_backend_migration_decorator.h b/chrome/browser/password_manager/android/password_store_backend_migration_decorator.h index 035aa02..6dc99b3 100644 --- a/chrome/browser/password_manager/android/password_store_backend_migration_decorator.h +++ b/chrome/browser/password_manager/android/password_store_backend_migration_decorator.h
@@ -57,8 +57,6 @@ void GetAllLoginsWithAffiliationAndBrandingAsync( LoginsOrErrorReply callback) override; void GetAutofillableLoginsAsync(LoginsOrErrorReply callback) override; - void GetAllLoginsForAccountAsync(std::string account, - LoginsOrErrorReply callback) override; void FillMatchingLoginsAsync( LoginsOrErrorReply callback, bool include_psl,
diff --git a/chrome/browser/password_manager/android/password_store_proxy_backend.cc b/chrome/browser/password_manager/android/password_store_proxy_backend.cc index 59bb270d..012c4e2 100644 --- a/chrome/browser/password_manager/android/password_store_proxy_backend.cc +++ b/chrome/browser/password_manager/android/password_store_proxy_backend.cc
@@ -139,12 +139,6 @@ main_backend()->GetAutofillableLoginsAsync(std::move(callback)); } -void PasswordStoreProxyBackend::GetAllLoginsForAccountAsync( - std::string account, - LoginsOrErrorReply callback) { - NOTREACHED(); -} - void PasswordStoreProxyBackend::FillMatchingLoginsAsync( LoginsOrErrorReply callback, bool include_psl,
diff --git a/chrome/browser/password_manager/android/password_store_proxy_backend.h b/chrome/browser/password_manager/android/password_store_proxy_backend.h index 8d730d8..136fded 100644 --- a/chrome/browser/password_manager/android/password_store_proxy_backend.h +++ b/chrome/browser/password_manager/android/password_store_proxy_backend.h
@@ -56,8 +56,6 @@ void GetAllLoginsWithAffiliationAndBrandingAsync( LoginsOrErrorReply callback) override; void GetAutofillableLoginsAsync(LoginsOrErrorReply callback) override; - void GetAllLoginsForAccountAsync(std::string account, - LoginsOrErrorReply callback) override; void FillMatchingLoginsAsync( LoginsOrErrorReply callback, bool include_psl,
diff --git a/chrome/browser/permissions/chrome_permissions_client.cc b/chrome/browser/permissions/chrome_permissions_client.cc index 5667bfb..41e1aa6 100644 --- a/chrome/browser/permissions/chrome_permissions_client.cc +++ b/chrome/browser/permissions/chrome_permissions_client.cc
@@ -23,6 +23,7 @@ #include "chrome/browser/content_settings/cookie_settings_factory.h" #include "chrome/browser/content_settings/host_content_settings_map_factory.h" #include "chrome/browser/engagement/important_sites_util.h" +#include "chrome/browser/media/webrtc/media_stream_device_permissions.h" #include "chrome/browser/metrics/ukm_background_recorder_service.h" #include "chrome/browser/permissions/contextual_notification_permission_ui_selector.h" #include "chrome/browser/permissions/origin_keyed_permission_action_service_factory.h" @@ -153,6 +154,15 @@ } #endif + +bool IsPermissionSetByAdministator(ContentSetting setting, + const content_settings::SettingInfo& info) { + return ((setting == ContentSetting::CONTENT_SETTING_BLOCK || + setting == ContentSetting::CONTENT_SETTING_ALLOW) && + (info.source == content_settings::SettingSource::kPolicy || + info.source == content_settings::SettingSource::kSupervised)); +} + } // namespace // static @@ -685,3 +695,75 @@ return PermissionsClient::CanRequestDevicePermission(type); #endif } + +// TODO(41014586): Integrate policy-set media permissions into +// SettingsSource.policy. Currently, AudioCaptureAllowed, VideoCaptureAllowed +// are not checked within |IsPermissionSetByAdministrator|, so +// |IsPermissionBlockedByDevicePolicy| and |IsPermissionAllowedByDevicePolicy| +// methods are needed to show the appropriate policy screen. +bool ChromePermissionsClient::IsPermissionBlockedByDevicePolicy( + content::WebContents* web_contents, + ContentSetting setting, + const content_settings::SettingInfo& info, + ContentSettingsType type) const { + if (IsPermissionSetByAdministator(setting, info) && + setting == CONTENT_SETTING_BLOCK) { + return true; + } + + Profile* profile = + Profile::FromBrowserContext(web_contents->GetBrowserContext()); + if (type == ContentSettingsType::MEDIASTREAM_MIC) { + return GetDevicePolicy(profile, web_contents->GetLastCommittedURL(), + prefs::kAudioCaptureAllowed, + prefs::kAudioCaptureAllowedUrls) == + MediaStreamDevicePolicy::ALWAYS_DENY; + } + + if (type == ContentSettingsType::MEDIASTREAM_CAMERA) { + return GetDevicePolicy(profile, web_contents->GetLastCommittedURL(), + prefs::kVideoCaptureAllowed, + prefs::kVideoCaptureAllowedUrls) == + MediaStreamDevicePolicy::ALWAYS_DENY; + } + + return false; +} + +bool ChromePermissionsClient::IsPermissionAllowedByDevicePolicy( + content::WebContents* web_contents, + ContentSetting setting, + const content_settings::SettingInfo& info, + ContentSettingsType type) const { + if (IsPermissionSetByAdministator(setting, info) && + setting == CONTENT_SETTING_ALLOW) { + return true; + } + + Profile* profile = + Profile::FromBrowserContext(web_contents->GetBrowserContext()); + if (type == ContentSettingsType::MEDIASTREAM_MIC) { + return GetDevicePolicy(profile, web_contents->GetLastCommittedURL(), + prefs::kAudioCaptureAllowed, + prefs::kAudioCaptureAllowedUrls) == + MediaStreamDevicePolicy::ALWAYS_ALLOW; + } + + if (type == ContentSettingsType::MEDIASTREAM_CAMERA) { + return GetDevicePolicy(profile, web_contents->GetLastCommittedURL(), + prefs::kVideoCaptureAllowed, + prefs::kVideoCaptureAllowedUrls) == + MediaStreamDevicePolicy::ALWAYS_ALLOW; + } + + return false; +} + +bool ChromePermissionsClient::IsSystemDenied(ContentSettingsType type) const { + return system_permission_settings::IsDenied(type); +} + +bool ChromePermissionsClient::CanPromptSystemPermission( + ContentSettingsType type) const { + return system_permission_settings::CanPrompt(type); +}
diff --git a/chrome/browser/permissions/chrome_permissions_client.h b/chrome/browser/permissions/chrome_permissions_client.h index 164433e..2fd1eaaa 100644 --- a/chrome/browser/permissions/chrome_permissions_client.h +++ b/chrome/browser/permissions/chrome_permissions_client.h
@@ -144,6 +144,18 @@ bool HasDevicePermission(ContentSettingsType type) const override; bool CanRequestDevicePermission(ContentSettingsType type) const override; + bool IsPermissionBlockedByDevicePolicy( + content::WebContents* web_contents, + ContentSetting setting, + const content_settings::SettingInfo& info, + ContentSettingsType type) const override; + bool IsPermissionAllowedByDevicePolicy( + content::WebContents* web_contents, + ContentSetting setting, + const content_settings::SettingInfo& info, + ContentSettingsType type) const override; + bool IsSystemDenied(ContentSettingsType type) const override; + bool CanPromptSystemPermission(ContentSettingsType type) const override; private: friend base::NoDestructor<ChromePermissionsClient>;
diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java index 58b64f5a..4ad5571c 100644 --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java
@@ -764,13 +764,6 @@ /** Personalized signin promo preference. */ public static final String SIGNIN_PROMO_BOOKMARKS_DECLINED = "signin_promo_bookmarks_declined"; - /** - * Whether the user dismissed the personalized sign in promo from the Settings. Default value is - * false. - */ - public static final String SIGNIN_PROMO_SETTINGS_PERSONALIZED_DISMISSED = - "settings_personalized_signin_promo_dismissed"; - // TODO(crbug.com/40697988): Remove this after migrating the legacy code that uses // the primary account before the native is loaded. public static final String SIGNIN_LEGACY_PRIMARY_ACCOUNT_EMAIL = "google.services.username";
diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/DeprecatedChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/DeprecatedChromePreferenceKeys.java index 692d7d7d..8561045 100644 --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/DeprecatedChromePreferenceKeys.java +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/DeprecatedChromePreferenceKeys.java
@@ -168,6 +168,7 @@ "reached_code_sampling_interval", "service_manager_for_background_prefetch", "service_manager_for_download_resumption", + "settings_personalized_signin_promo_dismissed", "signin_promo_impressions_count_bookmarks", "signin_promo_impressions_count_settings", "sole_integration_enabled",
diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java index 48586ed..1cd09a1 100644 --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java
@@ -108,7 +108,6 @@ ChromePreferenceKeys.SIGNIN_PROMO_NTP_PROMO_DISMISSED, ChromePreferenceKeys.SIGNIN_PROMO_NTP_PROMO_SUPPRESSION_PERIOD_START, ChromePreferenceKeys.SIGNIN_PROMO_BOOKMARKS_DECLINED, - ChromePreferenceKeys.SIGNIN_PROMO_SETTINGS_PERSONALIZED_DISMISSED, ChromePreferenceKeys.SIGNIN_LEGACY_PRIMARY_ACCOUNT_EMAIL, ChromePreferenceKeys.SNAPSHOT_DATABASE_REMOVED, ChromePreferenceKeys.SYNC_ERROR_MESSAGE_SHOWN_AT_TIME,
diff --git a/chrome/browser/renderer_preferences_util.cc b/chrome/browser/renderer_preferences_util.cc index 4cddab8..e6c3a05 100644 --- a/chrome/browser/renderer_preferences_util.cc +++ b/chrome/browser/renderer_preferences_util.cc
@@ -22,6 +22,7 @@ #endif #include "chrome/browser/profiles/profile.h" #include "chrome/common/pref_names.h" +#include "components/autofill/core/common/autofill_prefs.h" #include "components/language/core/browser/language_prefs.h" #include "components/language/core/browser/pref_names.h" #include "components/prefs/pref_service.h" @@ -117,7 +118,11 @@ ->IsDoNotTrackEnabled(); prefs->enable_encrypted_media = pref_service->GetBoolean(prefs::kEnableEncryptedMedia); -#if !BUILDFLAG(IS_ANDROID) + +#if BUILDFLAG(IS_ANDROID) + prefs->uses_platform_autofill = pref_service->GetBoolean( + autofill::prefs::kAutofillUsingVirtualViewStructure); +#else // if !BUILDFLAG(IS_ANDROID) prefs->caret_browsing_enabled = pref_service->GetBoolean(prefs::kCaretBrowsingEnabled); ui::AXPlatform::GetInstance().SetCaretBrowsingState(
diff --git a/chrome/browser/resources/BUILD.gn b/chrome/browser/resources/BUILD.gn index 6b5ab4a9..d41073b 100644 --- a/chrome/browser/resources/BUILD.gn +++ b/chrome/browser/resources/BUILD.gn
@@ -260,7 +260,6 @@ "predictors:resources", "privacy_sandbox/internals:resources", "usb_internals:resources", - "//chrome/browser:dev_ui_browser_resources", "//components/commerce/core/internals/resources", "//components/download/resources/download_internals:resources", "//components/history_clusters/history_clusters_internals/resources", @@ -315,7 +314,6 @@ "$root_gen_dir/chrome/bluetooth_internals_resources.pak", "$root_gen_dir/chrome/browsing_topics_internals_resources.pak", "$root_gen_dir/chrome/components_resources.pak", - "$root_gen_dir/chrome/dev_ui_browser_resources.pak", "$root_gen_dir/chrome/device_log_resources.pak", "$root_gen_dir/chrome/engagement_resources.pak", "$root_gen_dir/chrome/family_link_user_internals_resources.pak",
diff --git a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_kk.xtb b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_kk.xtb index 72dc614..33da996 100644 --- a/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_kk.xtb +++ b/chrome/browser/resources/chromeos/accessibility/strings/accessibility_strings_kk.xtb
@@ -9,7 +9,7 @@ <translation id="1013742170491673792">srched</translation> <translation id="1014370462248694370">Екі саусағыңызбен оңға сырғытыңыз</translation> <translation id="1022586497894531524">ChromeVox дауыстық ақпарат функциясын алғаш рет пайдаланып жатырсыз ба? Бұл қысқаша оқулықта ChromeVox қызметін қалай қолдану керектігі жөнінде маңызды ақпарат берілген.</translation> -<translation id="1025074108959230262">Жабысу режимі өшірілген</translation> +<translation id="1025074108959230262">Пернелерді жабыстыру режимі өшірулі</translation> <translation id="1031961866430398710">содан кейін</translation> <translation id="1038643060055067718">Жолдар:</translation> <translation id="1038795173450935438">Беттегі элементтен элементке ауысу үшін Search пернесін + оңға/солға өту көрсеткісін басыңыз. Келесі жолға ауысу үшін Search пернесі + төменге өту көрсеткісін, ал алдыңғы жолға ауысу үшін Search пернесі + жоғарыға өту көрсеткісін басыңыз. Қажетті элементке жеткенде, Search + бос орын пернесін басыңыз.</translation> @@ -93,7 +93,7 @@ <translation id="1465097259579587977">Қысқаша курсты қайта бастау</translation> <translation id="1480046233931937785">Авторлар</translation> <translation id="1487494366197411587">Chromebook құрылғысында Search пернесі сол жақ Shift пернесінің дәл үстінде тұрады.</translation> -<translation id="1498498210836053409">Мәтінге өзгерістер енгізу кезінде пернелерді жабыстыру режимін өшіру (Смарт пернелерді жабыстыру режимі)</translation> +<translation id="1498498210836053409">Мәтінге өзгерістер енгізу кезінде пернелерді жабыстыру режимін өшіру (пернелерді жабыстыру смарт режимі)</translation> <translation id="1499041187027566160">дыбыс деңгейін арттыру</translation> <translation id="1502086903961450562">Алдыңғы графика</translation> <translation id="1506187449813838456">Қадамды үлкейту</translation> @@ -303,7 +303,7 @@ <translation id="2909584066358367921">Келесі түйме жоқ.</translation> <translation id="2911433807131383493">ChromeVox оқулығын ашу</translation> <translation id="2912405967290226587">Үш саусағыңызбен оңға сырғытыңыз</translation> -<translation id="2919107550468490321">Смарт пернелерді жабыстыру режимі қосулы</translation> +<translation id="2919107550468490321">Пернелерді жабыстыру смарт режимі қосулы</translation> <translation id="2937799153569150791">Келесі 3-деңгей тақырыбы жоқ.</translation> <translation id="2942710183375260152">Қою сұрқай көк</translation> <translation id="2943596527105977722">Қошқыл алтын сары</translation> @@ -574,7 +574,7 @@ <translation id="4601367666219428522">кст <ph name="TABLENAME" /> <ph name="TABLEROWS" />x<ph name="TABLECOLS" /></translation> <translation id="4606933160360542263">Арнаулы пернелер тіркесімі: <ph name="KEY_COMBINATION" /></translation> <translation id="4615592953348396470">Келесі перненің басылуын елемеу</translation> -<translation id="4617384941327705512">Смарт пернелерді жабыстыру режимі өшірулі</translation> +<translation id="4617384941327705512">Пернелерді жабыстыру смарт режимі өшірулі</translation> <translation id="4623097797855662355">Баспа белгісі</translation> <translation id="4624970070706497034">TalkBack бұдан былай Chromebook құрылғыларына бейімделіп реттелмейді. Оны тек TalkBack әдепкі перне тіркесімдерімен пайдалана аласыз. "Search+A", содан соң "K" пернесін басып, қолжетімді тіркесімдерді көріңіз. Сонда да TalkBack-ті пайдаланғыңыз келсе, пәрменді қайта басыңыз.</translation> <translation id="4649220074413114917">Экранды екі саусақпен түрту арқылы ағымдағы кез келген сөзді тоқтатуға болады. ChromeVox құралының бір нәрсені оқығанын қаламасаңыз, осы функцияны пайдаланыңыз. Жалғастыру үшін экранды екі саусақпен түртіңіз.</translation> @@ -674,7 +674,7 @@ <translation id="5308380583665731573">Қосылу</translation> <translation id="5310788376443009632">жойылды:</translation> <translation id="5316825363044614340">келесі жолға өту</translation> -<translation id="5320727453979144100">Маңызды режим қосылған</translation> +<translation id="5320727453979144100">Пернелерді жабыстыру режимі қосулы</translation> <translation id="5321085947096604457">{COUNT,plural, =1{үтір}other{# үтір}}</translation> <translation id="532485153932049746">Мәтінді форматтау <ph name="FONT_SIZE_STRING" /> @@ -1230,7 +1230,7 @@ <translation id="958854023026327378">Бір саусағыңызбен төмен сырғытыңыз</translation> <translation id="962913030769097253">Келесі 1-деңгей тақырыбы</translation> <translation id="966588271015727539">Bluetooth Брайль дисплейін таңдаңыз</translation> -<translation id="973955474346881951">Маңызды режимді қосу/өшіру</translation> +<translation id="973955474346881951">Пернелерді жабыстыру режимін қосу/өшіру</translation> <translation id="985654871861528815">Бір жол төмен түсу</translation> <translation id="992256792861109788">Қызғылт</translation> </translationbundle> \ No newline at end of file
diff --git a/chrome/browser/resources/password_manager/user_utils_mixin.ts b/chrome/browser/resources/password_manager/user_utils_mixin.ts index c28e90e..2d3d5f1 100644 --- a/chrome/browser/resources/password_manager/user_utils_mixin.ts +++ b/chrome/browser/resources/password_manager/user_utils_mixin.ts
@@ -138,19 +138,19 @@ } private computeIsEligibleForAccountStorage_(): boolean { - return !!this.syncInfo_ && this.syncInfo_.isEligibleForAccountStorage; + return !!(this.syncInfo_?.isEligibleForAccountStorage); } private computeIsSyncingPasswords_(): boolean { - return !!this.syncInfo_ && this.syncInfo_.isSyncingPasswords; + return !!(this.syncInfo_?.isSyncingPasswords); } private computeAccountEmail_(): string { - return (this.accountInfo_ ? this.accountInfo_.email : ''); + return this.accountInfo_?.email || ''; } private computeAvatarImage_(): string { - return this.accountInfo_.avatarImage || ''; + return this.accountInfo_?.avatarImage || ''; } private computeIsAccountStoreUser_(): boolean {
diff --git a/chrome/browser/resources/settings/autofill_page/autofill_section.ts b/chrome/browser/resources/settings/autofill_page/autofill_section.ts index a330d98..bd95f1a 100644 --- a/chrome/browser/resources/settings/autofill_page/autofill_section.ts +++ b/chrome/browser/resources/settings/autofill_page/autofill_section.ts
@@ -260,11 +260,6 @@ return false; } - if (!loadTimeData.getBoolean( - 'syncEnableContactInfoDataTypeInTransportMode')) { - return false; - } - // Local profile of a logged-in user with disabled address sync and // enabled feature. return true;
diff --git a/chrome/browser/resources/settings/people_page/sync_account_control.html b/chrome/browser/resources/settings/people_page/sync_account_control.html index fbbdacbf..ef979f9a 100644 --- a/chrome/browser/resources/settings/people_page/sync_account_control.html +++ b/chrome/browser/resources/settings/people_page/sync_account_control.html
@@ -222,7 +222,7 @@ </cr-button> <cr-button id="sync-error-button" class="action-button cr-button-gap" hidden="[[!shouldShowErrorActionButton_(syncStatus, - showSetupButtons_)]]" + showSetupButtons_, syncStatus.statusAction)]]" on-click="onErrorButtonClick_" disabled="[[syncStatus.firstSetupInProgress]]"> [[syncStatus.statusActionText]]
diff --git a/chrome/browser/resources/settings/people_page/sync_account_control.ts b/chrome/browser/resources/settings/people_page/sync_account_control.ts index 99f393b7..41fc4a3 100644 --- a/chrome/browser/resources/settings/people_page/sync_account_control.ts +++ b/chrome/browser/resources/settings/people_page/sync_account_control.ts
@@ -411,7 +411,9 @@ !loadTimeData.getBoolean('isImprovedSettingsUIOnDesktopEnabled')) { return true; } - return this.syncStatus.signedInState !== SignedInState.SIGNED_IN; + + return this.syncStatus.signedInState !== SignedInState.SIGNED_IN || + this.syncStatus.statusAction !== StatusAction.NO_ACTION; } /** @@ -471,6 +473,12 @@ return true; } + if (loadTimeData.getBoolean('isImprovedSettingsUIOnDesktopEnabled') && + this.syncStatus.statusAction !== StatusAction.NO_ACTION) { + return true; + } + + return this.hideButtons || (!!this.syncStatus && (this.isSyncing_() || @@ -478,6 +486,11 @@ } private shouldShowTurnOffButton_(): boolean { + if (loadTimeData.getBoolean('isImprovedSettingsUIOnDesktopEnabled') && + this.syncStatus.statusAction !== StatusAction.NO_ACTION) { + return true; + } + return !this.hideButtons && !this.showSetupButtons_ && this.isSyncing_(); } @@ -488,6 +501,10 @@ return this.syncStatus.secondaryButtonActionText; } + if (this.syncStatus.statusAction !== StatusAction.NO_ACTION && + this.syncStatus.secondaryButtonActionText) { + return this.syncStatus.secondaryButtonActionText; + } return turnOffSync; } @@ -497,6 +514,12 @@ // In a subpage the passphrase button is not required. return false; } + + if (loadTimeData.getBoolean('isImprovedSettingsUIOnDesktopEnabled') && + this.syncStatus.statusAction !== StatusAction.NO_ACTION) { + return true; + } + return !this.hideButtons && !this.showSetupButtons_ && this.isSyncing_() && !!this.syncStatus.hasError && this.syncStatus.statusAction !== StatusAction.NO_ACTION; @@ -573,6 +596,12 @@ this.syncBrowserProxy_.startKeyRetrieval(); break; case StatusAction.ENTER_PASSPHRASE: + if (loadTimeData.getBoolean('isImprovedSettingsUIOnDesktopEnabled')) { + this.syncBrowserProxy_.showSyncPassphraseDialog(); + } else { + router.navigateTo(routes.SYNC); + } + break; case StatusAction.CONFIRM_SYNC_SETTINGS: default: router.navigateTo(routes.SYNC);
diff --git a/chrome/browser/resources/settings_shared/people_page/sync_browser_proxy.ts b/chrome/browser/resources/settings_shared/people_page/sync_browser_proxy.ts index aa40bec36..37844d5a1 100644 --- a/chrome/browser/resources/settings_shared/people_page/sync_browser_proxy.ts +++ b/chrome/browser/resources/settings_shared/people_page/sync_browser_proxy.ts
@@ -235,6 +235,12 @@ startKeyRetrieval(): void; /** + * Displays the sync passphrase dialog for users to enter passphrase to enable + * sync. + */ + showSyncPassphraseDialog(): void; + + /** * Gets the current sync status. */ getSyncStatus(): Promise<SyncStatus>; @@ -363,6 +369,10 @@ chrome.send('SyncStartKeyRetrieval'); } + showSyncPassphraseDialog() { + chrome.send('SyncShowSyncPassphraseDialog'); + } + getSyncStatus() { return sendWithPromise('SyncSetupGetSyncStatus'); }
diff --git a/chrome/browser/safety_hub/android/java/src/org/chromium/chrome/browser/safety_hub/SafetyHubHatsHelper.java b/chrome/browser/safety_hub/android/java/src/org/chromium/chrome/browser/safety_hub/SafetyHubHatsHelper.java index 1ac5f61a..546ce98 100644 --- a/chrome/browser/safety_hub/android/java/src/org/chromium/chrome/browser/safety_hub/SafetyHubHatsHelper.java +++ b/chrome/browser/safety_hub/android/java/src/org/chromium/chrome/browser/safety_hub/SafetyHubHatsHelper.java
@@ -109,6 +109,7 @@ void triggerControlHatsSurvey(TabModelSelector tabModelSelector) { mModuleType = CONTROL_NOTIFICATION_MODULE; mHasTappedCard = false; + mHasVisited = false; triggerHatsSurveyIfEnabled(tabModelSelector); } @@ -177,6 +178,12 @@ if (tab.isOffTheRecord() || webContents == null) { return; } + + boolean shouldQueryOverallState = + mModuleType.equals(CONTROL_NOTIFICATION_MODULE) + || !ChromeFeatureList.sSafetyHub.isEnabled(); + String overallState = shouldQueryOverallState ? "" : getOverallState(); + boolean didShowSurvey = SafetyHubHatsBridge.triggerHatsSurveyIfEnabled( mProfile, @@ -184,7 +191,7 @@ getModuleType(), mHasTappedCard, mHasVisited, - getOverallState()); + overallState); if (didShowSurvey) { removeObserver(); } @@ -216,6 +223,10 @@ @VisibleForTesting @NonNull String getOverallState() { + if (!ChromeFeatureList.sSafetyHub.isEnabled()) { + return ""; + } + @ModuleState int[] moduleStates = new int[5]; moduleStates[0] = getPasswordModuleState();
diff --git a/chrome/browser/safety_hub/android/java/src/org/chromium/chrome/browser/safety_hub/SafetyHubMagicStackBuilder.java b/chrome/browser/safety_hub/android/java/src/org/chromium/chrome/browser/safety_hub/SafetyHubMagicStackBuilder.java index 38e1d06..abdd607 100644 --- a/chrome/browser/safety_hub/android/java/src/org/chromium/chrome/browser/safety_hub/SafetyHubMagicStackBuilder.java +++ b/chrome/browser/safety_hub/android/java/src/org/chromium/chrome/browser/safety_hub/SafetyHubMagicStackBuilder.java
@@ -94,7 +94,8 @@ if (!mProfileSupplier.hasValue()) return false; - if (!ChromeFeatureList.sSafetyHub.isEnabled()) { + if (!ChromeFeatureList.sSafetyHub.isEnabled() + && ChromeFeatureList.sSafetyHubAndroidSurvey.isEnabled()) { SafetyHubHatsHelper.getForProfile(getRegularProfile()) .triggerControlHatsSurvey(mTabModelSelector); }
diff --git a/chrome/browser/signin/dice_browsertest.cc b/chrome/browser/signin/dice_browsertest.cc index c5dfeb2..59c70f4 100644 --- a/chrome/browser/signin/dice_browsertest.cc +++ b/chrome/browser/signin/dice_browsertest.cc
@@ -1317,7 +1317,6 @@ DiceExplicitSigninRollbackBrowserTest() { std::vector<base::test::FeatureRef> features = { - syncer::kSyncEnableContactInfoDataTypeInTransportMode, switches::kExplicitBrowserSigninUIOnDesktop}; std::vector<base::test::FeatureRef> enabled_features; std::vector<base::test::FeatureRef> disabled_features; @@ -1503,10 +1502,8 @@ }; DiceExplicitSigninBrowserTest() { - std::vector<base::test::FeatureRef> enabled_features = { - syncer::kSyncEnableContactInfoDataTypeInTransportMode, - }; - std::vector<base::test::FeatureRef> disabled_features = {}; + std::vector<base::test::FeatureRef> enabled_features; + std::vector<base::test::FeatureRef> disabled_features; if (content::IsPreTest()) { disabled_features.push_back(switches::kExplicitBrowserSigninUIOnDesktop);
diff --git a/chrome/browser/supervised_user/advanced_content_restrictions_interactive_uitest.cc b/chrome/browser/supervised_user/advanced_content_restrictions_interactive_uitest.cc index fc5af92..e82568a 100644 --- a/chrome/browser/supervised_user/advanced_content_restrictions_interactive_uitest.cc +++ b/chrome/browser/supervised_user/advanced_content_restrictions_interactive_uitest.cc
@@ -14,8 +14,8 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/tabs/tab_strip_model_observer.h" #include "chrome/test/interaction/interactive_browser_test.h" +#include "chrome/test/supervised_user/browser_user.h" #include "chrome/test/supervised_user/family_live_test.h" -#include "chrome/test/supervised_user/family_member.h" #include "components/content_settings/core/browser/cookie_settings.h" #include "components/content_settings/core/browser/host_content_settings_map.h" #include "components/content_settings/core/common/content_settings.h"
diff --git a/chrome/browser/supervised_user/extensions_interactive_uitest.cc b/chrome/browser/supervised_user/extensions_interactive_uitest.cc index 9a553b8e..8f6e01a 100644 --- a/chrome/browser/supervised_user/extensions_interactive_uitest.cc +++ b/chrome/browser/supervised_user/extensions_interactive_uitest.cc
@@ -17,8 +17,8 @@ #include "chrome/browser/ui/supervised_user/parent_permission_dialog.h" #include "chrome/browser/ui/tabs/tab_strip_model_observer.h" #include "chrome/test/interaction/interactive_browser_test.h" +#include "chrome/test/supervised_user/browser_user.h" #include "chrome/test/supervised_user/family_live_test.h" -#include "chrome/test/supervised_user/family_member.h" #include "components/prefs/pref_service.h" #include "components/supervised_user/core/common/features.h" #include "components/supervised_user/core/common/pref_names.h"
diff --git a/chrome/browser/supervised_user/incognito_mode_interactive_uitest.cc b/chrome/browser/supervised_user/incognito_mode_interactive_uitest.cc index b9d3fd78..b79e087c 100644 --- a/chrome/browser/supervised_user/incognito_mode_interactive_uitest.cc +++ b/chrome/browser/supervised_user/incognito_mode_interactive_uitest.cc
@@ -11,8 +11,8 @@ #include "chrome/browser/ui/toolbar/app_menu_model.h" #include "chrome/test/base/ui_test_utils.h" #include "chrome/test/interaction/interactive_browser_test.h" +#include "chrome/test/supervised_user/browser_user.h" #include "chrome/test/supervised_user/family_live_test.h" -#include "chrome/test/supervised_user/family_member.h" #include "content/public/test/browser_test.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/chrome/browser/supervised_user/url_filter_interactive_uitest.cc b/chrome/browser/supervised_user/url_filter_interactive_uitest.cc index 2c8b932..44f201b 100644 --- a/chrome/browser/supervised_user/url_filter_interactive_uitest.cc +++ b/chrome/browser/supervised_user/url_filter_interactive_uitest.cc
@@ -11,8 +11,8 @@ #include "base/types/strong_alias.h" #include "chrome/browser/ui/tabs/tab_strip_model_observer.h" #include "chrome/test/interaction/interactive_browser_test.h" +#include "chrome/test/supervised_user/browser_user.h" #include "chrome/test/supervised_user/family_live_test.h" -#include "chrome/test/supervised_user/family_member.h" #include "components/supervised_user/core/common/features.h" #include "components/supervised_user/test_support/family_link_settings_state_management.h" #include "content/public/test/browser_test.h"
diff --git a/chrome/browser/sync/test/integration/single_client_contact_info_sync_test.cc b/chrome/browser/sync/test/integration/single_client_contact_info_sync_test.cc index a7701fec..74f948a7 100644 --- a/chrome/browser/sync/test/integration/single_client_contact_info_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_contact_info_sync_test.cc
@@ -146,6 +146,10 @@ autofill::PersonalDataManager* GetPersonalDataManager() const { return contact_info_helper::GetPersonalDataManager(GetProfile(0)); } + + private: + base::test::ScopedFeatureList feature_{ + switches::kExplicitBrowserSigninUIOnDesktop}; }; IN_PROC_BROWSER_TEST_F(SingleClientContactInfoSyncTest, DownloadInitialData) { @@ -267,26 +271,9 @@ .Wait()); } -// Specialized fixture that enables AutofillAccountProfilesOnSignIn. -class SingleClientContactInfoTransportSyncTest - : public SingleClientContactInfoSyncTest { - public: - SingleClientContactInfoTransportSyncTest() { - transport_feature_.InitWithFeatures( - /*enabled_features=*/{syncer:: - kSyncEnableContactInfoDataTypeInTransportMode, - switches::kExplicitBrowserSigninUIOnDesktop}, - /*disabled_features=*/{}); - } - - private: - base::test::ScopedFeatureList transport_feature_; -}; - -// When SyncEnableContactInfoDataTypeInTransportMode is enabled, the -// CONTACT_INFO type should run in transport mode and the availability of +// CONTACT_INFO should be able to run in transport mode and the availability of // account profiles should depend on the signed-in state. -IN_PROC_BROWSER_TEST_F(SingleClientContactInfoTransportSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientContactInfoSyncTest, TransportMode) { AutofillProfile profile = BuildTestAccountProfile(); AddSpecificsToServer(AsContactInfoSpecifics(profile), GetFakeServer()); @@ -309,7 +296,7 @@ } #if !BUILDFLAG(IS_ANDROID) -IN_PROC_BROWSER_TEST_F(SingleClientContactInfoTransportSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientContactInfoSyncTest, DeleteAccountDataInErrorState) { // Add a profile to account storage. AutofillProfile profile = BuildTestAccountProfile(); @@ -358,7 +345,7 @@ } // Account storage is not enabled when the user is in auth error. -IN_PROC_BROWSER_TEST_F(SingleClientContactInfoTransportSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientContactInfoSyncTest, AuthErrorState) { // Setup transport mode. ASSERT_TRUE(SetupClients()); @@ -404,7 +391,7 @@ } // Regression test for https://crbug.com/340194452 -IN_PROC_BROWSER_TEST_F(SingleClientContactInfoTransportSyncTest, +IN_PROC_BROWSER_TEST_F(SingleClientContactInfoSyncTest, IsAutofillSyncToggleAvailable) { // Setup transport mode. ASSERT_TRUE(SetupClients());
diff --git a/chrome/browser/sync/test/integration/single_client_standalone_transport_sync_test.cc b/chrome/browser/sync/test/integration/single_client_standalone_transport_sync_test.cc index d17c0145..fc32022c 100644 --- a/chrome/browser/sync/test/integration/single_client_standalone_transport_sync_test.cc +++ b/chrome/browser/sync/test/integration/single_client_standalone_transport_sync_test.cc
@@ -265,7 +265,6 @@ /*enabled_features=*/ {switches::kExplicitBrowserSigninUIOnDesktop, syncer::kEnablePreferencesAccountStorage, - syncer::kSyncEnableContactInfoDataTypeInTransportMode, syncer::kSyncEnableContactInfoDataTypeForCustomPassphraseUsers, syncer::kReplaceSyncPromosWithSignInPromos, syncer::kSyncAutofillWalletCredentialData}, @@ -491,7 +490,6 @@ /*enabled_features=*/ {switches::kExplicitBrowserSigninUIOnDesktop, syncer::kReadingListEnableSyncTransportModeUponSignIn, - syncer::kSyncEnableContactInfoDataTypeInTransportMode, syncer::kSyncEnableBookmarksInTransportMode, syncer::kEnablePreferencesAccountStorage}, /*disabled_features=*/{});
diff --git a/chrome/browser/sync/test/integration/sync_test.cc b/chrome/browser/sync/test/integration/sync_test.cc index 7147178..b6abb391 100644 --- a/chrome/browser/sync/test/integration/sync_test.cc +++ b/chrome/browser/sync/test/integration/sync_test.cc
@@ -1098,6 +1098,7 @@ syncer::DataTypeSet allowed_types = {syncer::AUTOFILL_WALLET_CREDENTIAL, syncer::AUTOFILL_WALLET_DATA, syncer::AUTOFILL_WALLET_USAGE, + syncer::CONTACT_INFO, syncer::DEVICE_INFO, syncer::SECURITY_EVENTS, syncer::SEND_TAB_TO_SELF, @@ -1105,11 +1106,6 @@ syncer::USER_CONSENTS}; allowed_types.PutAll(syncer::ControlTypes()); - if (base::FeatureList::IsEnabled( - syncer::kSyncEnableContactInfoDataTypeInTransportMode)) { - allowed_types.Put(syncer::CONTACT_INFO); - } - allowed_types.Put(syncer::PLUS_ADDRESS); if (base::FeatureList::IsEnabled(syncer::kSyncPlusAddressSetting)) { allowed_types.Put(syncer::PLUS_ADDRESS_SETTING);
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn index 70ef509d..a6d93fe8b 100644 --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn
@@ -144,7 +144,7 @@ "translate/translate_language_list_model.h", "uninstall_browser_prompt.h", "view_ids.h", - "webauthn/authenticator_request_dialog.h", + "webauthn/authenticator_request_dialog_view_controller.h", "webid/account_selection_view.h", "webid/identity_dialog_controller.cc", "webid/identity_dialog_controller.h", @@ -339,7 +339,6 @@ "//chrome/app/vector_icons", "//chrome/browser:browser_process", "//chrome/browser:buildflags", - "//chrome/browser:dev_ui_browser_resources", "//chrome/browser:font_pref", "//chrome/browser:global_features", "//chrome/browser/autofill", @@ -4836,6 +4835,7 @@ "views/webauthn/authenticator_qr_sheet_view.h", "views/webauthn/authenticator_request_dialog_view.cc", "views/webauthn/authenticator_request_dialog_view.h", + "views/webauthn/authenticator_request_dialog_view_controller_views.cc", "views/webauthn/authenticator_request_sheet_view.cc", "views/webauthn/authenticator_request_sheet_view.h", "views/webauthn/authenticator_select_account_sheet_view.cc",
diff --git a/chrome/browser/ui/android/signin/java/res/layout/sync_promo_view.xml b/chrome/browser/ui/android/signin/java/res/layout/sync_promo_view.xml index a5d9778..290e95c4 100644 --- a/chrome/browser/ui/android/signin/java/res/layout/sync_promo_view.xml +++ b/chrome/browser/ui/android/signin/java/res/layout/sync_promo_view.xml
@@ -63,7 +63,7 @@ android:lineSpacingMultiplier="1.25" android:textAppearance="@style/TextAppearance.TextLarge.Primary" android:includeFontPadding="false" - tools:text="@string/sync_promo_title_settings"/> + tools:text="@string/signin_promo_title_recent_tabs"/> <TextView android:id="@+id/sync_promo_description" @@ -76,7 +76,7 @@ android:lineSpacingMultiplier="1.25" android:textAppearance="@style/TextAppearance.TextSmall.Secondary" android:includeFontPadding="false" - tools:text="@string/sync_promo_description_settings_without_passwords"/> + tools:text="@string/signin_promo_description_recent_tabs"/> <org.chromium.ui.widget.ButtonCompat android:id="@+id/sync_promo_signin_button"
diff --git a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SyncPromoController.java b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SyncPromoController.java index a25fe64d..d852efa 100644 --- a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SyncPromoController.java +++ b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SyncPromoController.java
@@ -22,11 +22,9 @@ import org.chromium.base.Promise; import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordUserAction; -import org.chromium.base.shared_preferences.SharedPreferencesManager; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; -import org.chromium.chrome.browser.preferences.Pref; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.signin.services.DisplayableProfileData; import org.chromium.chrome.browser.signin.services.IdentityServicesProvider; @@ -42,11 +40,9 @@ import org.chromium.chrome.browser.ui.signin.history_sync.HistorySyncHelper; import org.chromium.components.browser_ui.widget.impression.ImpressionTracker; import org.chromium.components.browser_ui.widget.impression.OneShotImpressionListener; -import org.chromium.components.prefs.PrefService; import org.chromium.components.signin.AccountManagerFacade; import org.chromium.components.signin.AccountManagerFacadeProvider; import org.chromium.components.signin.AccountUtils; -import org.chromium.components.signin.Tribool; import org.chromium.components.signin.base.AccountInfo; import org.chromium.components.signin.base.CoreAccountInfo; import org.chromium.components.signin.identitymanager.AccountInfoServiceProvider; @@ -55,11 +51,9 @@ import org.chromium.components.signin.metrics.SigninAccessPoint; import org.chromium.components.sync.SyncService; import org.chromium.components.sync.UserSelectableType; -import org.chromium.components.user_prefs.UserPrefs; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; -import java.util.List; import java.util.Set; /** @@ -88,7 +82,6 @@ private static final int MAX_TOTAL_PROMO_SHOW_COUNT = 100; private static final int MAX_IMPRESSIONS_BOOKMARKS = 20; - private static final int MAX_IMPRESSIONS_SETTINGS = 20; private static final int NTP_SYNC_PROMO_INCREASE_SHOW_COUNT_AFTER_MINUTE = 30; @VisibleForTesting static final int NTP_SYNC_PROMO_RESET_AFTER_DAYS = 30; @@ -120,7 +113,6 @@ private final @StringRes int mTitleStringId; private final @StringRes int mDescriptionStringId; private final boolean mShouldSuppressSecondaryButton; - private final SyncConsentActivityLauncher mSyncConsentActivityLauncher; private final SigninAndHistorySyncActivityLauncher mSigninAndHistorySyncActivityLauncher; private final @HistorySyncConfig.OptInMode int mHistoryOptInMode; private final Delegate mDelegate; @@ -170,21 +162,6 @@ return firstShownTime > 0 && currentTime - firstShownTime >= timeSinceFirstShownLimitMs; } - private static boolean canShowSettingsPromo() { - if (ChromeFeatureList.isEnabled( - ChromeFeatureList.REPLACE_SYNC_PROMOS_WITH_SIGN_IN_PROMOS)) { - return false; - } - SharedPreferencesManager preferencesManager = ChromeSharedPreferences.getInstance(); - boolean isPromoDismissed = - preferencesManager.readBoolean( - ChromePreferenceKeys.SIGNIN_PROMO_SETTINGS_PERSONALIZED_DISMISSED, false); - return preferencesManager.readInt( - getPromoShowCountPreferenceName(SigninAccessPoint.SETTINGS)) - < MAX_IMPRESSIONS_SETTINGS - && !isPromoDismissed; - } - @VisibleForTesting public static String getPromoShowCountPreferenceName(@AccessPoint int accessPoint) { switch (accessPoint) { @@ -196,9 +173,6 @@ // data is wiped. return ChromePreferenceKeys.SYNC_PROMO_SHOW_COUNT.createKey( SigninPreferencesManager.SigninPromoAccessPointId.NTP); - case SigninAccessPoint.SETTINGS: - return ChromePreferenceKeys.SYNC_PROMO_SHOW_COUNT.createKey( - SigninPreferencesManager.SigninPromoAccessPointId.SETTINGS); default: throw new IllegalArgumentException( "Unexpected value for access point: " + accessPoint); @@ -211,19 +185,16 @@ * @param profile The Profile associated with the sync promo. * @param bottomSheetStrings Contains the string resource IDs for the sign-in bottom sheet. * @param accessPoint Specifies the AccessPoint from which the promo is to be shown. - * @param syncConsentActivityLauncher Launcher of {@link SyncConsentActivity}. * @param signinAndHistorySyncActivityLauncher Launcher of {@link SigninAndHistorySyncActivity}. */ public SyncPromoController( Profile profile, @NonNull AccountPickerBottomSheetStrings bottomSheetStrings, @AccessPoint int accessPoint, - SyncConsentActivityLauncher syncConsentActivityLauncher, SigninAndHistorySyncActivityLauncher signinAndHistorySyncActivityLauncher) { mProfile = profile; mBottomSheetStrings = bottomSheetStrings; mAccessPoint = accessPoint; - mSyncConsentActivityLauncher = syncConsentActivityLauncher; mSigninAndHistorySyncActivityLauncher = signinAndHistorySyncActivityLauncher; switch (mAccessPoint) { case SigninAccessPoint.BOOKMARK_MANAGER: @@ -241,14 +212,8 @@ mImpressionUserActionName = "Signin_Impression_FromNTPFeedTopPromo"; mSyncPromoDismissedPreferenceTracker = ChromePreferenceKeys.SIGNIN_PROMO_NTP_PROMO_DISMISSED; - if (ChromeFeatureList.isEnabled( - ChromeFeatureList.REPLACE_SYNC_PROMOS_WITH_SIGN_IN_PROMOS)) { - mTitleStringId = R.string.signin_promo_title_ntp_feed_top_promo; - mDescriptionStringId = R.string.signin_promo_description_ntp_feed_top_promo; - } else { - mTitleStringId = R.string.sync_promo_title_ntp_content_suggestions; - mDescriptionStringId = R.string.sync_promo_description_ntp_content_suggestions; - } + mTitleStringId = R.string.signin_promo_title_ntp_feed_top_promo; + mDescriptionStringId = R.string.signin_promo_description_ntp_feed_top_promo; mShouldSuppressSecondaryButton = false; mHistoryOptInMode = HistorySyncConfig.OptInMode.NONE; // TODO(b/332704829): Move delegate creation outside of this constructor. @@ -257,48 +222,14 @@ case SigninAccessPoint.RECENT_TABS: mImpressionUserActionName = "Signin_Impression_FromRecentTabs"; mSyncPromoDismissedPreferenceTracker = null; - if (ChromeFeatureList.isEnabled( - ChromeFeatureList.REPLACE_SYNC_PROMOS_WITH_SIGN_IN_PROMOS)) { - mTitleStringId = R.string.signin_promo_title_recent_tabs; - mDescriptionStringId = R.string.signin_promo_description_recent_tabs; - mShouldSuppressSecondaryButton = true; - } else { - mTitleStringId = R.string.sync_promo_title_recent_tabs; - mDescriptionStringId = R.string.sync_promo_description_recent_tabs; - mShouldSuppressSecondaryButton = false; - } + mTitleStringId = R.string.signin_promo_title_recent_tabs; + mDescriptionStringId = R.string.signin_promo_description_recent_tabs; + mShouldSuppressSecondaryButton = true; mHistoryOptInMode = HistorySyncConfig.OptInMode.REQUIRED; // TODO(b/332704829): Move delegate creation outside of this constructor. mDelegate = (context, profileData) -> { - if (ChromeFeatureList.isEnabled( - ChromeFeatureList.REPLACE_SYNC_PROMOS_WITH_SIGN_IN_PROMOS)) { - return context.getString(R.string.signin_promo_turn_on); - } - return context.getString(R.string.sync_promo_turn_on_sync); - }; - break; - case SigninAccessPoint.SETTINGS: - mImpressionUserActionName = "Signin_Impression_FromSettings"; - mSyncPromoDismissedPreferenceTracker = - ChromePreferenceKeys.SIGNIN_PROMO_SETTINGS_PERSONALIZED_DISMISSED; - mTitleStringId = R.string.sync_promo_title_settings; - mDescriptionStringId = R.string.sync_promo_description_settings_without_passwords; - mShouldSuppressSecondaryButton = false; - mHistoryOptInMode = HistorySyncConfig.OptInMode.NONE; - // TODO(b/332704829): Move delegate creation outside of this constructor. - mDelegate = - (context, profileData) -> { - assert !ChromeFeatureList.isEnabled( - ChromeFeatureList.REPLACE_SYNC_PROMOS_WITH_SIGN_IN_PROMOS); - - IdentityManager identityManager = - IdentityServicesProvider.get().getIdentityManager(mProfile); - if (identityManager.hasPrimaryAccount(ConsentLevel.SIGNIN) - || profileData == null) { - return context.getString(R.string.sync_promo_turn_on_sync); - } - return SigninUtils.getContinueAsButtonText(context, profileData); + return context.getString(R.string.signin_promo_turn_on); }; break; default: @@ -316,8 +247,6 @@ return canShowNTPPromo(); case SigninAccessPoint.RECENT_TABS: return canShowRecentTabsPromo(); - case SigninAccessPoint.SETTINGS: - return canShowSettingsPromo(); default: assert false : "Unexpected value for access point: " + mAccessPoint; return false; @@ -325,13 +254,10 @@ } private boolean canShowNTPPromo() { - if (ChromeFeatureList.isEnabled( - ChromeFeatureList.REPLACE_SYNC_PROMOS_WITH_SIGN_IN_PROMOS)) { - if (IdentityServicesProvider.get() - .getIdentityManager(mProfile) - .hasPrimaryAccount(ConsentLevel.SIGNIN)) { - return false; - } + if (IdentityServicesProvider.get() + .getIdentityManager(mProfile) + .hasPrimaryAccount(ConsentLevel.SIGNIN)) { + return false; } int promoShowCount = @@ -364,24 +290,14 @@ AccountInfo accountInfo = visibleAccountPromise.isFulfilled() ? visibleAccountPromise.getResult() : null; - if (accountInfo == null) return false; - - return ChromeFeatureList.isEnabled( - ChromeFeatureList.REPLACE_SYNC_PROMOS_WITH_SIGN_IN_PROMOS) - || accountInfo - .getAccountCapabilities() - .canShowHistorySyncOptInsWithoutMinorModeRestrictions() - == Tribool.TRUE; + return accountInfo != null; } private boolean canShowBookmarkPromo() { - if (ChromeFeatureList.isEnabled( - ChromeFeatureList.REPLACE_SYNC_PROMOS_WITH_SIGN_IN_PROMOS)) { - if (IdentityServicesProvider.get() - .getIdentityManager(mProfile) - .hasPrimaryAccount(ConsentLevel.SIGNIN)) { - return false; - } + if (IdentityServicesProvider.get() + .getIdentityManager(mProfile) + .hasPrimaryAccount(ConsentLevel.SIGNIN)) { + return false; } SyncService syncService = SyncServiceFactory.getForProfile(mProfile); @@ -408,22 +324,17 @@ } private boolean canShowRecentTabsPromo() { - if (ChromeFeatureList.isEnabled( - ChromeFeatureList.REPLACE_SYNC_PROMOS_WITH_SIGN_IN_PROMOS)) { - final HistorySyncHelper historySyncHelper = HistorySyncHelper.getForProfile(mProfile); - final SigninManager signinManager = - IdentityServicesProvider.get().getSigninManager(mProfile); - final IdentityManager identityManager = - IdentityServicesProvider.get().getIdentityManager(mProfile); - if (!signinManager.isSigninAllowed() - && !identityManager.hasPrimaryAccount(ConsentLevel.SIGNIN)) { - // If sign-in is not possible, then history sync isn't possible either. - return false; - } - return !historySyncHelper.shouldSuppressHistorySync(); + final HistorySyncHelper historySyncHelper = HistorySyncHelper.getForProfile(mProfile); + final SigninManager signinManager = + IdentityServicesProvider.get().getSigninManager(mProfile); + final IdentityManager identityManager = + IdentityServicesProvider.get().getIdentityManager(mProfile); + if (!signinManager.isSigninAllowed() + && !identityManager.hasPrimaryAccount(ConsentLevel.SIGNIN)) { + // If sign-in is not possible, then history sync isn't possible either. + return false; } - return !SyncServiceFactory.getForProfile(mProfile) - .isTypeManagedByPolicy(UserSelectableType.TABS); + return !historySyncHelper.shouldSuppressHistorySync(); } // Find the visible account for sync promos @@ -566,17 +477,8 @@ view.getTitle().setText(mTitleStringId); view.getDescription().setText(mDescriptionStringId); - - IdentityManager identityManager = - IdentityServicesProvider.get().getIdentityManager(mProfile); - SigninManager signinManager = IdentityServicesProvider.get().getSigninManager(mProfile); - PrefService prefService = UserPrefs.get(mProfile); - boolean shouldLaunchSigninFlow = - shouldLaunchSigninFlow( - mAccessPoint, identityManager, signinManager, null, prefService); view.getPrimaryButton().setText(mDelegate.getTextForPrimaryButton(context, null)); - view.getPrimaryButton() - .setOnClickListener(v -> signinWithNewAccount(context, shouldLaunchSigninFlow)); + view.getPrimaryButton().setOnClickListener(v -> signinWithNewAccount(context)); view.getSecondaryButton().setVisibility(View.GONE); } @@ -589,25 +491,10 @@ view.getTitle().setText(mTitleStringId); view.getDescription().setText(mDescriptionStringId); - + view.getPrimaryButton().setOnClickListener(v -> signinWithDefaultAccount(context)); + view.getPrimaryButton().setText(mDelegate.getTextForPrimaryButton(context, mProfileData)); IdentityManager identityManager = IdentityServicesProvider.get().getIdentityManager(mProfile); - SigninManager signinManager = IdentityServicesProvider.get().getSigninManager(mProfile); - List<CoreAccountInfo> accounts = - AccountManagerFacadeProvider.getInstance().getCoreAccountInfos().getResult(); - PrefService prefService = UserPrefs.get(mProfile); - boolean shouldLaunchSigninFlow = - shouldLaunchSigninFlow( - mAccessPoint, identityManager, signinManager, accounts, prefService); - if (!ChromeFeatureList.isEnabled(ChromeFeatureList.REPLACE_SYNC_PROMOS_WITH_SIGN_IN_PROMOS) - && shouldLaunchSigninFlow - && mAccessPoint == SigninAccessPoint.BOOKMARK_MANAGER) { - // The bookmarks manager has different conditions for displaying the new flow. - view.getDescription().setText(R.string.signin_promo_description_bookmarks); - } - view.getPrimaryButton() - .setOnClickListener(v -> signinWithDefaultAccount(context, shouldLaunchSigninFlow)); - view.getPrimaryButton().setText(mDelegate.getTextForPrimaryButton(context, mProfileData)); if (identityManager.hasPrimaryAccount(ConsentLevel.SIGNIN) || mShouldSuppressSecondaryButton) { view.getSecondaryButton().setVisibility(View.GONE); @@ -619,79 +506,62 @@ view.getSecondaryButton().setVisibility(View.GONE); } else { view.getSecondaryButton().setText(R.string.signin_promo_choose_another_account); - view.getSecondaryButton() - .setOnClickListener( - v -> signinWithNotDefaultAccount(context, shouldLaunchSigninFlow)); + view.getSecondaryButton().setOnClickListener(v -> signinWithNotDefaultAccount(context)); view.getSecondaryButton().setVisibility(View.VISIBLE); } } - private void signinWithNewAccount(Context context, boolean launchSigninFlow) { + private void signinWithNewAccount(Context context) { recordShowCountHistogram(UserAction.CONTINUED); - if (launchSigninFlow) { - BottomSheetSigninAndHistorySyncConfig config = - new BottomSheetSigninAndHistorySyncConfig.Builder( - mBottomSheetStrings, - NoAccountSigninMode.BOTTOM_SHEET, - WithAccountSigninMode.DEFAULT_ACCOUNT_BOTTOM_SHEET, - mHistoryOptInMode) - .build(); - @Nullable - Intent intent = - mSigninAndHistorySyncActivityLauncher.createBottomSheetSigninIntentOrShowError( - context, mProfile, config, mAccessPoint); - if (intent != null) { - context.startActivity(intent); - } - } else { - mSyncConsentActivityLauncher.launchActivityForPromoAddAccountFlow( - context, mAccessPoint); + BottomSheetSigninAndHistorySyncConfig config = + new BottomSheetSigninAndHistorySyncConfig.Builder( + mBottomSheetStrings, + NoAccountSigninMode.BOTTOM_SHEET, + WithAccountSigninMode.DEFAULT_ACCOUNT_BOTTOM_SHEET, + mHistoryOptInMode) + .build(); + @Nullable + Intent intent = + mSigninAndHistorySyncActivityLauncher.createBottomSheetSigninIntentOrShowError( + context, mProfile, config, mAccessPoint); + if (intent != null) { + context.startActivity(intent); } } - private void signinWithDefaultAccount(Context context, boolean launchSigninFlow) { + private void signinWithDefaultAccount(Context context) { recordShowCountHistogram(UserAction.CONTINUED); - if (launchSigninFlow) { - BottomSheetSigninAndHistorySyncConfig config = - new BottomSheetSigninAndHistorySyncConfig.Builder( - mBottomSheetStrings, - NoAccountSigninMode.BOTTOM_SHEET, - WithAccountSigninMode.DEFAULT_ACCOUNT_BOTTOM_SHEET, - mHistoryOptInMode) - .build(); - @Nullable - Intent intent = - mSigninAndHistorySyncActivityLauncher.createBottomSheetSigninIntentOrShowError( - context, mProfile, config, mAccessPoint); - if (intent != null) { - context.startActivity(intent); - } - } else { - mSyncConsentActivityLauncher.launchActivityForPromoDefaultFlow( - context, mAccessPoint, mProfileData.getAccountEmail()); + BottomSheetSigninAndHistorySyncConfig config = + new BottomSheetSigninAndHistorySyncConfig.Builder( + mBottomSheetStrings, + NoAccountSigninMode.BOTTOM_SHEET, + WithAccountSigninMode.DEFAULT_ACCOUNT_BOTTOM_SHEET, + mHistoryOptInMode) + .build(); + @Nullable + Intent intent = + mSigninAndHistorySyncActivityLauncher.createBottomSheetSigninIntentOrShowError( + context, mProfile, config, mAccessPoint); + if (intent != null) { + context.startActivity(intent); } } - private void signinWithNotDefaultAccount(Context context, boolean launchSigninFlow) { + private void signinWithNotDefaultAccount(Context context) { recordShowCountHistogram(UserAction.CONTINUED); - if (launchSigninFlow) { - BottomSheetSigninAndHistorySyncConfig config = - new BottomSheetSigninAndHistorySyncConfig.Builder( - mBottomSheetStrings, - NoAccountSigninMode.BOTTOM_SHEET, - WithAccountSigninMode.CHOOSE_ACCOUNT_BOTTOM_SHEET, - mHistoryOptInMode) - .build(); - @Nullable - Intent intent = - mSigninAndHistorySyncActivityLauncher.createBottomSheetSigninIntentOrShowError( - context, mProfile, config, mAccessPoint); - if (intent != null) { - context.startActivity(intent); - } - } else { - mSyncConsentActivityLauncher.launchActivityForPromoChooseAccountFlow( - context, mAccessPoint, mProfileData.getAccountEmail()); + BottomSheetSigninAndHistorySyncConfig config = + new BottomSheetSigninAndHistorySyncConfig.Builder( + mBottomSheetStrings, + NoAccountSigninMode.BOTTOM_SHEET, + WithAccountSigninMode.CHOOSE_ACCOUNT_BOTTOM_SHEET, + mHistoryOptInMode) + .build(); + @Nullable + Intent intent = + mSigninAndHistorySyncActivityLauncher.createBottomSheetSigninIntentOrShowError( + context, mProfile, config, mAccessPoint); + if (intent != null) { + context.startActivity(intent); } } @@ -734,22 +604,8 @@ } private String getPromoPrimaryButtonText(Context context, DisplayableProfileData profileData) { - IdentityManager identityManager = - IdentityServicesProvider.get().getIdentityManager(mProfile); - - if (ChromeFeatureList.isEnabled( - ChromeFeatureList.REPLACE_SYNC_PROMOS_WITH_SIGN_IN_PROMOS)) { - return profileData == null - ? context.getString(R.string.signin_promo_signin) - : SigninUtils.getContinueAsButtonText(context, profileData); - } - - if (identityManager.hasPrimaryAccount(ConsentLevel.SIGNIN) || profileData == null) { - return context.getString(R.string.sync_promo_turn_on_sync); - } - return profileData == null - ? context.getString(R.string.signin_promo_turn_on) + ? context.getString(R.string.signin_promo_signin) : SigninUtils.getContinueAsButtonText(context, profileData); } @@ -761,47 +617,4 @@ public static int getMaxImpressionsBookmarksForTests() { return MAX_IMPRESSIONS_BOOKMARKS; } - - @VisibleForTesting - static boolean shouldLaunchSigninFlow( - @SigninAccessPoint int accessPoint, - IdentityManager identityManager, - SigninManager signinManager, - @Nullable List<CoreAccountInfo> accounts, - PrefService prefService) { - if (ChromeFeatureList.isEnabled( - ChromeFeatureList.REPLACE_SYNC_PROMOS_WITH_SIGN_IN_PROMOS)) { - return true; - } - - if (accessPoint != SigninAccessPoint.BOOKMARK_MANAGER) { - return false; - } - if (identityManager.hasPrimaryAccount(ConsentLevel.SIGNIN)) { - return false; - } - - // If the last syncing user did not remove data during sign-out, show the sync promo - // instead. - if (!prefService.getString(Pref.GOOGLE_SERVICES_LAST_SYNCING_GAIA_ID).isEmpty()) { - return false; - } - - return accounts != null - && !accounts.isEmpty() - && !existsNonGmailAccount(signinManager, accounts); - } - - // Returns whether at least one non-gmail account exist in `accounts`. - @VisibleForTesting - static boolean existsNonGmailAccount( - SigninManager signinManager, List<CoreAccountInfo> accounts) { - assert accounts != null && !accounts.isEmpty(); - for (CoreAccountInfo coreAccountInfo : accounts) { - if (!signinManager.extractDomainName(coreAccountInfo.getEmail()).equals(GMAIL_DOMAIN)) { - return true; - } - } - return false; - } }
diff --git a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SyncPromoControllerUiTest.java b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SyncPromoControllerUiTest.java index d1ba9c8..417ecdb 100644 --- a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SyncPromoControllerUiTest.java +++ b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SyncPromoControllerUiTest.java
@@ -28,7 +28,6 @@ import androidx.test.filters.MediumTest; import androidx.test.runner.lifecycle.Stage; -import org.junit.Assert; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -49,9 +48,7 @@ import org.chromium.chrome.browser.flags.ChromeSwitches; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.ProfileManager; -import org.chromium.chrome.browser.signin.services.IdentityServicesProvider; import org.chromium.chrome.browser.signin.services.ProfileDataCache; -import org.chromium.chrome.browser.signin.services.SigninManager; import org.chromium.chrome.browser.ui.signin.BottomSheetSigninAndHistorySyncConfig.NoAccountSigninMode; import org.chromium.chrome.browser.ui.signin.BottomSheetSigninAndHistorySyncConfig.WithAccountSigninMode; import org.chromium.chrome.browser.ui.signin.SyncConsentActivityLauncher.AccessPoint; @@ -60,8 +57,6 @@ import org.chromium.chrome.test.AutomotiveContextWrapperTestRule; import org.chromium.chrome.test.ChromeJUnit4RunnerDelegate; import org.chromium.chrome.test.util.browser.signin.SigninTestRule; -import org.chromium.components.signin.base.CoreAccountInfo; -import org.chromium.components.signin.base.GaiaId; import org.chromium.components.signin.metrics.SigninAccessPoint; import org.chromium.components.signin.test.util.TestAccounts; import org.chromium.content_public.browser.test.NativeLibraryTestUtils; @@ -71,8 +66,6 @@ import org.chromium.ui.test.util.NightModeTestUtils.NightModeParams; import org.chromium.ui.test.util.RenderTestRule; -import java.util.List; - /** Render tests of SyncPromoController. */ @RunWith(ParameterizedRunner.class) @ParameterAnnotations.UseRunnerDelegate(ChromeJUnit4RunnerDelegate.class) @@ -102,7 +95,6 @@ public final BaseActivityTestRule<BlankUiTestActivity> mActivityTestRule = new BaseActivityTestRule<>(BlankUiTestActivity.class); - @Mock private SyncConsentActivityLauncher mSyncConsentActivityLauncher; @Mock private SigninAndHistorySyncActivityLauncher mSigninAndHistorySyncActivityLauncher; @Before @@ -146,48 +138,6 @@ onView(withId(R.id.sync_promo_close_button)).check(matches(isDisplayed())); } - // TODO(crbug.com/329216953): Move these tests into SyncPromoControllerTest after it's converted - // to device unit tests. - @Test - @MediumTest - public void testExistsNonGmailAccountReturnsTrue() { - SigninManager signinManager = - ThreadUtils.runOnUiThreadBlocking( - () -> - IdentityServicesProvider.get() - .getSigninManager( - ProfileManager.getLastUsedRegularProfile())); - List<CoreAccountInfo> accounts = - List.of( - CoreAccountInfo.createFromEmailAndGaiaId( - "test1@" + SyncPromoController.GMAIL_DOMAIN, new GaiaId("unused")), - CoreAccountInfo.createFromEmailAndGaiaId( - "test2@nongmail.com", new GaiaId("unused"))); - - Assert.assertTrue(SyncPromoController.existsNonGmailAccount(signinManager, accounts)); - } - - // TODO(crbug.com/329216953): Move these tests into SyncPromoControllerTest after it's converted - // to device unit tests. - @Test - @MediumTest - public void testExistsNonGmailAccountReturnsFalse() { - SigninManager signinManager = - ThreadUtils.runOnUiThreadBlocking( - () -> - IdentityServicesProvider.get() - .getSigninManager( - ProfileManager.getLastUsedRegularProfile())); - List<CoreAccountInfo> accounts = - List.of( - CoreAccountInfo.createFromEmailAndGaiaId( - "test1@" + SyncPromoController.GMAIL_DOMAIN, new GaiaId("unused")), - CoreAccountInfo.createFromEmailAndGaiaId( - "test2@" + SyncPromoController.GMAIL_DOMAIN, new GaiaId("unused"))); - - Assert.assertFalse(SyncPromoController.existsNonGmailAccount(signinManager, accounts)); - } - @Test @MediumTest public void testBookmarkSyncPromoContinueButtonLaunchesSigninFlow() throws Throwable { @@ -455,7 +405,6 @@ ProfileManager.getLastUsedRegularProfile(), BOTTOM_SHEET_STRINGS, accessPoint, - mSyncConsentActivityLauncher, mSigninAndHistorySyncActivityLauncher); syncPromoController.setUpSyncPromoView( profileDataCache,
diff --git a/chrome/browser/ui/android/signin/junit/src/org/chromium/chrome/browser/ui/signin/SyncPromoControllerTest.java b/chrome/browser/ui/android/signin/junit/src/org/chromium/chrome/browser/ui/signin/SyncPromoControllerTest.java index 6fe2278..b3a4abd 100644 --- a/chrome/browser/ui/android/signin/junit/src/org/chromium/chrome/browser/ui/signin/SyncPromoControllerTest.java +++ b/chrome/browser/ui/android/signin/junit/src/org/chromium/chrome/browser/ui/signin/SyncPromoControllerTest.java
@@ -4,7 +4,6 @@ package org.chromium.chrome.browser.ui.signin; -import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; @@ -46,7 +45,6 @@ import org.chromium.components.sync.SyncService; import org.chromium.components.sync.UserSelectableType; -import java.util.List; import java.util.Set; /** Tests for {@link SyncPromoController}. */ @@ -92,8 +90,6 @@ @Mock private HistorySyncHelper mHistorySyncHelper; - @Mock private SyncConsentActivityLauncher mSyncConsentActivityLauncher; - @Mock private SigninAndHistorySyncActivityLauncher mSigninAndHistorySyncActivityLauncher; private final SharedPreferencesManager mSharedPreferencesManager = @@ -121,7 +117,6 @@ mProfile, BOTTOM_SHEET_STRINGS, SigninAccessPoint.NTP_FEED_TOP_PROMO, - mSyncConsentActivityLauncher, mSigninAndHistorySyncActivityLauncher); } @@ -138,7 +133,6 @@ mProfile, BOTTOM_SHEET_STRINGS, SigninAccessPoint.NTP_FEED_TOP_PROMO, - mSyncConsentActivityLauncher, mSigninAndHistorySyncActivityLauncher); Assert.assertFalse(syncPromoController.canShowSyncPromo()); @@ -293,7 +287,6 @@ mProfile, BOTTOM_SHEET_STRINGS, SigninAccessPoint.BOOKMARK_MANAGER, - mSyncConsentActivityLauncher, mSigninAndHistorySyncActivityLauncher); Assert.assertFalse(syncPromoController.canShowSyncPromo()); } @@ -308,7 +301,6 @@ mProfile, BOTTOM_SHEET_STRINGS, SigninAccessPoint.BOOKMARK_MANAGER, - mSyncConsentActivityLauncher, mSigninAndHistorySyncActivityLauncher); Assert.assertTrue(syncPromoController.canShowSyncPromo()); } @@ -325,7 +317,6 @@ mProfile, BOTTOM_SHEET_STRINGS, SigninAccessPoint.BOOKMARK_MANAGER, - mSyncConsentActivityLauncher, mSigninAndHistorySyncActivityLauncher); Assert.assertFalse(syncPromoController.canShowSyncPromo()); } @@ -341,7 +332,6 @@ mProfile, BOTTOM_SHEET_STRINGS, SigninAccessPoint.BOOKMARK_MANAGER, - mSyncConsentActivityLauncher, mSigninAndHistorySyncActivityLauncher); Assert.assertTrue(syncPromoController.canShowSyncPromo()); } @@ -357,7 +347,6 @@ mProfile, BOTTOM_SHEET_STRINGS, SigninAccessPoint.BOOKMARK_MANAGER, - mSyncConsentActivityLauncher, mSigninAndHistorySyncActivityLauncher); Assert.assertTrue(syncPromoController.canShowSyncPromo()); } @@ -374,7 +363,6 @@ mProfile, BOTTOM_SHEET_STRINGS, SigninAccessPoint.RECENT_TABS, - mSyncConsentActivityLauncher, mSigninAndHistorySyncActivityLauncher); Assert.assertFalse(syncPromoController.canShowSyncPromo()); } @@ -391,7 +379,6 @@ mProfile, BOTTOM_SHEET_STRINGS, SigninAccessPoint.RECENT_TABS, - mSyncConsentActivityLauncher, mSigninAndHistorySyncActivityLauncher); Assert.assertFalse(syncPromoController.canShowSyncPromo()); } @@ -408,7 +395,6 @@ mProfile, BOTTOM_SHEET_STRINGS, SigninAccessPoint.RECENT_TABS, - mSyncConsentActivityLauncher, mSigninAndHistorySyncActivityLauncher); Assert.assertTrue(syncPromoController.canShowSyncPromo()); } @@ -425,28 +411,10 @@ mProfile, BOTTOM_SHEET_STRINGS, SigninAccessPoint.RECENT_TABS, - mSyncConsentActivityLauncher, mSigninAndHistorySyncActivityLauncher); Assert.assertTrue(syncPromoController.canShowSyncPromo()); } - @Test - public void shouldLaunchBookmarksSigninFlowReturnsTrue() { - doReturn(false).when(mIdentityManager).hasPrimaryAccount(ConsentLevel.SIGNIN); - doReturn(SyncPromoController.GMAIL_DOMAIN) - .when(mSigninManager) - .extractDomainName(anyString()); - mAccountManagerTestRule.addAccount(TestAccounts.ACCOUNT1); - - Assert.assertTrue( - SyncPromoController.shouldLaunchSigninFlow( - SigninAccessPoint.BOOKMARK_MANAGER, - mIdentityManager, - mSigninManager, - List.of(TestAccounts.ACCOUNT1), - mPrefService)); - } - private void disableNtpSyncPromoBySettingLimits(long firstShownTime, long lastShownTime) { ChromeSharedPreferences.getInstance() .writeInt(
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd index 3ca7344..78e39d1 100644 --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -3866,36 +3866,18 @@ <message name="IDS_SIGNIN_PROMO_DESCRIPTION_BOOKMARKS" desc="This string is the title of a card that appears when the user opens Chrome's bookmarks; the user is signed out of Chrome. The headline above this string is 'Get all your bookmarks'. There's no character limit but try to keep the translation under 120 characters." meaning="This message means that the user can get the bookmarks from their computer on their phone, and their phone's bookmarks on their computer. We want users to read this card and tap the 'Continue' button and sign-in. The tone should be inviting."> Sign in to get your bookmarks and more on all your devices </message> - <message name="IDS_SYNC_PROMO_TITLE_NTP_CONTENT_SUGGESTIONS" desc="This string is the headline of a card that appears when the user visits Chrome's new tab page; the user may be signed in to Chrome, but isn't syncing their Chrome data. The line below this string is 'Sync to get the most relevant content from Google'. [CHAR_LIMIT=70]" meaning="This headline means that the user is missing out on more interesting and relevant news articles. We want users to read this card and tap the 'Continue' button and turn on sync. The tone should be inviting."> - Get better suggestions - </message> - <message name="IDS_SYNC_PROMO_DESCRIPTION_NTP_CONTENT_SUGGESTIONS" desc="This string is the body of a card that appears when the user visits Chrome's new tab page; the user may be signed in to Chrome, but isn't syncing their Chrome data. The headline above this string is 'See stories for you'. There's no character limit but try to keep the translation under 120 characters." meaning="This message means that the user is missing out on more interesting and relevant news articles. We want users to read this card and tap the 'Continue' button and turn on sync. The tone should be inviting."> - Sync to get the most relevant content from Google - </message> <message name="IDS_SIGNIN_PROMO_TITLE_NTP_FEED_TOP_PROMO" desc="This string is the headline of a card that appears when the user visits Chrome's new tab page; the user isn't signed in to Chrome. The line below this string is 'Sign in to get content based on your interests'. [CHAR_LIMIT=70]"> Get better content </message> <message name="IDS_SIGNIN_PROMO_DESCRIPTION_NTP_FEED_TOP_PROMO" desc="This string is the body of a card that appears when the user visits Chrome's new tab page; the user isn't signed in to Chrome. The headline above this string is 'Get better content'. There's no character limit but try to keep the translation under 120 characters." meaning="This message means that the user is missing out on more interesting and relevant news articles. We want users to read this card and tap the 'Continue' button and sign-in. The tone should be inviting."> Sign in to get content based on your interests </message> - <message name="IDS_SYNC_PROMO_TITLE_RECENT_TABS" desc="This string is the headline of a card that appears when the user opens Chrome's recent tabs. The user may be signed in to Chrome, but isn't syncing their Chrome data. The line below this string is 'Sync to get your tabs from your other devices'. [CHAR_LIMIT=70]" meaning="This headline means that the user can see some of their recent tabs from their computer on their phone, and their phone's recent tabs on their computer. We want users to read this card and tap the 'Continue' button and turn on sync. The tone should be inviting."> - Get all your tabs - </message> <message name="IDS_SIGNIN_PROMO_TITLE_RECENT_TABS" desc="This string is the headline of a card that appears when the user opens Chrome's recent tabs. The user may be signed in to Chrome, but has not opted in for syncing History and Tabs. The line below this string is 'To see tabs from your other devices, sync your tabs and history'. This headline means that the user can see some of their recent tabs from their computer on their phone, and their phone's recent tabs on their computer. We want users to read this card and tap the 'Turn on' button and turn on history and tabs syncing. The tone should be inviting. [CHAR_LIMIT=70]"> You’ll find your tabs from other devices here </message> - <message name="IDS_SYNC_PROMO_DESCRIPTION_RECENT_TABS" desc="This string is the body of a card that appears when the user opens Chrome's recent tabs. The user may be signed in to Chrome, but isn't syncing their Chrome data. There's no character limit but try to keep the translation under 120 characters." meaning="The headline above this string is 'Continue from another device'. This message means that the user can see some of their recent tabs from their computer on their phone, and their phone's recent tabs on their computer. We want users to read this card and tap the 'Continue' button and turn on sync. The tone should be inviting."> - Sync to get your tabs from your other devices - </message> <message name="IDS_SIGNIN_PROMO_DESCRIPTION_RECENT_TABS" desc="This string is the body of a card that appears when the user opens Chrome's recent tabs. The user may be signed in to Chrome, but has not opted in for syncing History and Tabs. This message means that the user can see some of their recent tabs from their computer on their phone, and their phone's recent tabs on their computer once opted in history and tabs syncing. We want users to read this card and tap the 'Turn on' button and turn on History and Tabs syncing. The tone should be inviting. There's no character limit but try to keep the translation under 120 characters."> To see tabs from your other devices, sync your tabs and history </message> - <message name="IDS_SYNC_PROMO_TITLE_SETTINGS" desc="This string is the headline of a card that appears when the user opens Chrome's settings; the user may be signed in to Chrome, but isn't syncing their Chrome data. The line below this string is 'Sync to get your passwords, bookmarks and more on all your devices'. [CHAR_LIMIT=70]" meaning="This headline means that the user can use Chrome more easily by syncing their passwords, bookmarks, settings, and more.. We want users to read this card and tap the 'Continue' button and turn on sync. The tone should be inviting."> - Use Chrome your way - </message> - <message name="IDS_SYNC_PROMO_DESCRIPTION_SETTINGS_WITHOUT_PASSWORDS" desc="Same as IDS_SYNC_PROMO_DESCRIPTION_SETTINGS but without mentioning passwords. This string is the body of a card that appears when the user opens Chrome's settings; the user may be signed in to Chrome, but isn't syncing their Chrome data. The headline above this string is 'Browse more easily'. There's no character limit but try to keep the translation under 120 characters." meaning="This message means that the user can use Chrome more easily by syncing their passwords, bookmarks, settings, and more.. We want users to read this card and tap the 'Continue' button and turn on sync. The tone should be inviting."> - Sync to get your bookmarks, history and more on your other devices - </message> <message name="IDS_SIGNIN_PROMO_CHOOSE_ANOTHER_ACCOUNT" desc="Button that the user can press if they want to select a different account before signing in. This button is shown below 'Continue as Joe Doe' button that signs user in with default account."> Choose another account </message>
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_DESCRIPTION_NTP_CONTENT_SUGGESTIONS.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_DESCRIPTION_NTP_CONTENT_SUGGESTIONS.png.sha1 deleted file mode 100644 index 20239db..0000000 --- a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_DESCRIPTION_NTP_CONTENT_SUGGESTIONS.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -56f82c782efe8eee4ad2db78bc590ac11813183a \ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_DESCRIPTION_RECENT_TABS.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_DESCRIPTION_RECENT_TABS.png.sha1 deleted file mode 100644 index 659cb0a..0000000 --- a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_DESCRIPTION_RECENT_TABS.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -d81d4c747bf819f438d5d203d6e8db2648112cfd \ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_DESCRIPTION_SETTINGS_WITHOUT_PASSWORDS.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_DESCRIPTION_SETTINGS_WITHOUT_PASSWORDS.png.sha1 deleted file mode 100644 index fa8bddf..0000000 --- a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_DESCRIPTION_SETTINGS_WITHOUT_PASSWORDS.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -82ff3ae27c8b482d865df31e7326d260c96b421e \ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_TITLE_NTP_CONTENT_SUGGESTIONS.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_TITLE_NTP_CONTENT_SUGGESTIONS.png.sha1 deleted file mode 100644 index fa685cc6..0000000 --- a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_TITLE_NTP_CONTENT_SUGGESTIONS.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -cb872bee39dad13efe5a6e40f03d2c96ee3b73ff \ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_TITLE_RECENT_TABS.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_TITLE_RECENT_TABS.png.sha1 deleted file mode 100644 index 573b343..0000000 --- a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_TITLE_RECENT_TABS.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -1c993f643e42ae1f37c54c62e099f675d3b64e7b \ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_TITLE_SETTINGS.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_TITLE_SETTINGS.png.sha1 deleted file mode 100644 index ae522a7..0000000 --- a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_SYNC_PROMO_TITLE_SETTINGS.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -9af1f40af1460eda6ddc8be80f060d5270cfaf7b \ No newline at end of file
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb index 24831fd..7699339 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_cs.xtb
@@ -214,7 +214,7 @@ <translation id="1957557050935255529">Načítání PDF…</translation> <translation id="1959679933317802873">Čeká se na obsah</translation> <translation id="1960290143419248813">V této verzi platformy Android již aktualizace prohlížeče Chrome nejsou podporovány</translation> -<translation id="1963056249988316027">Kontrola identity je zapnutá a nedokáže ověřit, že jste to vy</translation> +<translation id="1963056249988316027">Ověření totožnosti je zapnuté a nedokáže ověřit, že jste to vy</translation> <translation id="1963976881984600709">Standardní ochrana</translation> <translation id="1966710179511230534">Aktualizujte prosím své přihlašovací údaje.</translation> <translation id="1969037871259811890">Vymazáním údajů o prohlížení se neodhlásíte z účtu Google. Pokud to chcete provést, <ph name="BEGIN_LINK1" />odhlaste se z Chromu<ph name="END_LINK1" />.</translation>
diff --git a/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb b/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb index 13137ef3..7b4c32d 100644 --- a/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb +++ b/chrome/browser/ui/android/strings/translations/android_chrome_strings_tr.xtb
@@ -376,7 +376,7 @@ <translation id="2708051474374549906">Tarama verilerinizin Google'a gönderilmesi aracılığıyla tehlikeli siteler, indirmeler ve uzantılara karşı gerçek zamanlı, proaktif koruma</translation> <translation id="2708226184420201102"><ph name="PRODUCT_NAME" /> tarayıcıda aç</translation> <translation id="271033894570825754">Yeni</translation> -<translation id="2718352093833049315">Yaln. Kablosuzda</translation> +<translation id="2718352093833049315">Kablosuz ağ varken</translation> <translation id="2718846868787000099">Siteler, tercih ettiğiniz dillerde içerik göstermek için tercihlerinizi görebilir</translation> <translation id="2723001399770238859">ses</translation> <translation id="2739887572830526131">Daha sonra sekme eklemek için bu grubu tutun ya da artık ihtiyacınız yoksa silin.</translation>
diff --git a/chrome/browser/ui/ash/birch/birch_test_util.cc b/chrome/browser/ui/ash/birch/birch_test_util.cc index 06ab9509..396a51a7 100644 --- a/chrome/browser/ui/ash/birch/birch_test_util.cc +++ b/chrome/browser/ui/ash/birch/birch_test_util.cc
@@ -11,7 +11,6 @@ #include "ash/shell.h" #include "ash/wm/overview/birch/birch_chip_button_base.h" #include "ash/wm/overview/overview_grid_test_api.h" -#include "base/containers/flat_tree.h" #include "base/run_loop.h" #include "components/prefs/pref_service.h" @@ -37,12 +36,9 @@ return test_api.GetBirchChips()[0]; } -size_t GetCoralChipsNum() { +size_t GetBirchChipsNum() { aura::Window* root = Shell::GetPrimaryRootWindow(); - return base::ranges::count_if( - OverviewGridTestApi(root).GetBirchChips(), [](const auto& chip) { - return chip->GetItem()->GetType() == BirchItemType::kCoral; - }); + return OverviewGridTestApi(root).GetBirchChips().size(); } void DisableAllDataTypePrefsExcept(std::vector<std::string_view> exceptions) {
diff --git a/chrome/browser/ui/ash/birch/birch_test_util.h b/chrome/browser/ui/ash/birch/birch_test_util.h index e54afb7a..07b7bef1 100644 --- a/chrome/browser/ui/ash/birch/birch_test_util.h +++ b/chrome/browser/ui/ash/birch/birch_test_util.h
@@ -18,8 +18,8 @@ // Returns the button from the birch chip bar. Asserts there is only one button. BirchChipButtonBase* GetBirchChipButton(); -// Returns the number of coral chip buttons on birch bar. -size_t GetCoralChipsNum(); +// Returns the number of chip buttons on birch bar. +size_t GetBirchChipsNum(); // Disables all data type prefs except the given exceptions. void DisableAllDataTypePrefsExcept(std::vector<std::string_view> exceptions);
diff --git a/chrome/browser/ui/ash/wm/coral_browsertest.cc b/chrome/browser/ui/ash/wm/coral_browsertest.cc index 6cc65de..b6ac6c8 100644 --- a/chrome/browser/ui/ash/wm/coral_browsertest.cc +++ b/chrome/browser/ui/ash/wm/coral_browsertest.cc
@@ -540,7 +540,7 @@ birch_data_fetch_waiter.Run(); // The birch bar is created with two coral chips. - ASSERT_EQ(GetCoralChipsNum(), 2u); + ASSERT_EQ(GetBirchChipsNum(), 2u); // Closing the first browser with all items in groups. SelectFirstBrowser(); @@ -548,7 +548,7 @@ CloseBrowserSynchronously(browser()); // Two chips are removed. - EXPECT_EQ(GetCoralChipsNum(), 0u); + EXPECT_EQ(0u, GetBirchChipsNum()); } // Tests that closing a desk removes all coral chips. @@ -602,14 +602,14 @@ birch_data_fetch_waiter.Run(); // The birch bar is created with two coral chips. - ASSERT_EQ(GetCoralChipsNum(), 2u); + ASSERT_EQ(GetBirchChipsNum(), 2u); // Closing the active desk removes all chips. RemoveDesk(GetActiveDesk(), DeskCloseType::kCloseAllWindows); SimulateWaitForCloseAll(); // Two chips are removed. - EXPECT_EQ(GetCoralChipsNum(), 0u); + EXPECT_EQ(0u, GetBirchChipsNum()); } // Tests that merging a desk removes all coral chips. @@ -664,7 +664,7 @@ birch_data_fetch_waiter.Run(); // The birch bar is created with two coral chips. - ASSERT_EQ(GetCoralChipsNum(), 2u); + ASSERT_EQ(GetBirchChipsNum(), 2u); // There are two desks before removing. auto* desks_controller = DesksController::Get(); @@ -676,7 +676,7 @@ ASSERT_EQ(desks_controller->GetNumberOfDesks(), 1); // Two chips are removed. - EXPECT_EQ(0u, GetCoralChipsNum()); + EXPECT_EQ(0u, GetBirchChipsNum()); } // Tests that moving a window to another desk would update the groups and chips. @@ -732,7 +732,7 @@ birch_data_fetch_waiter.Run(); // The birch bar is created with two coral chips. - ASSERT_EQ(GetCoralChipsNum(), 2u); + ASSERT_EQ(GetBirchChipsNum(), 2u); // Both groups initially have 4 entities. const auto& group_1 = @@ -770,7 +770,7 @@ EXPECT_FALSE(desks_controller->BelongsToActiveDesk(file_window)); // The first chip is removed. - EXPECT_EQ(GetCoralChipsNum(), 1u); + EXPECT_EQ(GetBirchChipsNum(), 1u); } // Tests that the same coral chip will not show up again if we just created a @@ -882,7 +882,7 @@ birch_data_fetch_waiter.Run(); // There should be two chips on the bar. - ASSERT_EQ(GetCoralChipsNum(), 2u); + ASSERT_EQ(GetBirchChipsNum(), 2u); // Launch the first group. test::Click(GetFirstCoralButton()); @@ -906,7 +906,7 @@ GURL("https://calendar.google.com"))); // Launch the second group. - ASSERT_EQ(GetCoralChipsNum(), 1u); + ASSERT_EQ(GetBirchChipsNum(), 1u); test::Click(GetFirstCoralButton()); // We should have three desks and the new active desk is the third one. @@ -927,93 +927,4 @@ GURL("https://meet.google.com"))); } -// The coral browser tests with the fake backend. -class CoralFakeBackendBrowserTest : public CoralBrowserTest { - public: - CoralFakeBackendBrowserTest() = default; - CoralFakeBackendBrowserTest(const CoralFakeBackendBrowserTest&) = delete; - CoralFakeBackendBrowserTest& operator=(const CoralFakeBackendBrowserTest&) = - delete; - ~CoralFakeBackendBrowserTest() override = default; - - // CoralBrowserTest: - void SetUpCommandLine(base::CommandLine* command_line) override { - InProcessBrowserTest::SetUpCommandLine(command_line); - command_line->AppendSwitch(switches::kForceBirchFakeCoralBackend); - } -}; - -// Tests that the second restore chip will retent after restoring the first one. -IN_PROC_BROWSER_TEST_F(CoralFakeBackendBrowserTest, - PRE_RetentSecondRestoreChip) { - Profile* profile = ProfileManager::GetActiveUserProfile(); - - // Create a browser with different tabs and urls. - test::CreateAndShowBrowser( - profile, - {GURL("https://youtube.com"), GURL("https://google.com"), - GURL("https://docs.google.com"), GURL("https://drive.google.com")}); - - // Launch some SWA's. - test::InstallSystemAppsForTesting(profile); - test::CreateSystemWebApp(profile, SystemWebAppType::FILE_MANAGER); - test::CreateSystemWebApp(profile, SystemWebAppType::SETTINGS); - - // Launch some PWA's. - test::InstallAndLaunchPWA(profile, GURL("https://maps.google.com/"), - /*launch_in_browser=*/false, - /*app_title=*/u"Google Maps"); - test::InstallAndLaunchPWA(profile, GURL("https://mail.google.com/"), - /*launch_in_browser=*/false, - /*app_title=*/u"Gmail"); - - // Immediate save to full restore file to bypass the 2.5 second throttle. - AppLaunchInfoSaveWaiter::Wait(); -} - -IN_PROC_BROWSER_TEST_F(CoralFakeBackendBrowserTest, RetentSecondRestoreChip) { - ASSERT_TRUE(BrowserList::GetInstance()->empty()); - - Profile* profile = ProfileManager::GetActiveUserProfile(); - - test::InstallSystemAppsForTesting(profile); - - // Wait until the chip is visible, it may not be visible while data fetch is - // underway or the overview animation is still running. - EXPECT_TRUE(base::test::RunUntil([]() { - BirchChipButtonBase* coral_chip = GetBirchChipButton(); - return !!coral_chip; - })); - - // The fake backend should generate two groups. - ASSERT_EQ(GetCoralChipsNum(), 2u); - BirchChipButtonBase* coral_chip = GetBirchChipButton(); - ASSERT_EQ(coral_chip->GetItem()->GetType(), BirchItemType::kCoral); - ASSERT_EQ(static_cast<BirchCoralItem*>(coral_chip->GetItem())->source(), - CoralSource::kPostLogin); - - // Restore the first chip. - test::Click(coral_chip); - WaitForOverviewExitAnimation(); - - // Set up a callback for a birch data fetch. - base::RunLoop birch_data_fetch_waiter; - Shell::Get()->birch_model()->SetDataFetchCallbackForTest( - birch_data_fetch_waiter.QuitClosure()); - - // Re-enter Overview. - ToggleOverview(); - WaitForOverviewEntered(); - - // Wait for fetch callback to complete. - birch_data_fetch_waiter.Run(); - - // There should be only one restore chip on the bar. - ASSERT_EQ(GetCoralChipsNum(), 1u); - coral_chip = GetBirchChipButton(); - ASSERT_EQ(coral_chip->GetItem()->GetType(), BirchItemType::kCoral); - ASSERT_EQ(static_cast<BirchCoralItem*>(coral_chip->GetItem())->source(), - CoralSource::kPostLogin); -} - } // namespace ash
diff --git a/chrome/browser/ui/autofill/address_editor_controller.cc b/chrome/browser/ui/autofill/address_editor_controller.cc index ba5f786..840ba69 100644 --- a/chrome/browser/ui/autofill/address_editor_controller.cc +++ b/chrome/browser/ui/autofill/address_editor_controller.cc
@@ -45,7 +45,8 @@ }, &pdm_.get()); } - countries_.SetCountries(pdm_.get(), std::move(filter), locale_); + countries_.SetCountries(pdm_->address_data_manager(), std::move(filter), + locale_); std::u16string profile_country_code = profile_to_edit_.GetRawInfo(ADDRESS_HOME_COUNTRY); UpdateEditorFields(base::UTF16ToASCII(profile_country_code));
diff --git a/chrome/browser/ui/autofill/autofill_client_provider.cc b/chrome/browser/ui/autofill/autofill_client_provider.cc index 826d68c..5478b43 100644 --- a/chrome/browser/ui/autofill/autofill_client_provider.cc +++ b/chrome/browser/ui/autofill/autofill_client_provider.cc
@@ -15,7 +15,6 @@ #include "base/android/jni_android.h" #include "chrome/browser/autofill/android/android_autofill_availability_status.h" #include "chrome/browser/autofill/android/jni_headers/AutofillClientProviderUtils_jni.h" -#include "chrome/browser/keyboard_accessory/android/manual_filling_controller_impl.h" #include "components/android_autofill/browser/android_autofill_client.h" #endif // BUILDFLAG(IS_ANDROID)
diff --git a/chrome/browser/ui/page_info/merchant_trust_side_panel.h b/chrome/browser/ui/page_info/merchant_trust_side_panel.h index d3a1333..ce8a092 100644 --- a/chrome/browser/ui/page_info/merchant_trust_side_panel.h +++ b/chrome/browser/ui/page_info/merchant_trust_side_panel.h
@@ -13,6 +13,7 @@ static const char kMerchantTrustContextParameterName[] = "s"; static const char kMerchantTrustContextParameterValue[] = "CHROME_SIDE_PANEL"; +static const char kMerchantTrustRef[] = "reviews"; // Implemented by merchant_trust_side_panel_coordinator.cc in ui/views. void ShowMerchantTrustSidePanel(content::WebContents* web_contents,
diff --git a/chrome/browser/ui/passwords/bubble_controllers/password_change/privacy_notice_bubble_view_controller.cc b/chrome/browser/ui/passwords/bubble_controllers/password_change/privacy_notice_bubble_view_controller.cc index 1942394..1a097d1d 100644 --- a/chrome/browser/ui/passwords/bubble_controllers/password_change/privacy_notice_bubble_view_controller.cc +++ b/chrome/browser/ui/passwords/bubble_controllers/password_change/privacy_notice_bubble_view_controller.cc
@@ -6,6 +6,9 @@ #include "base/memory/weak_ptr.h" #include "chrome/browser/ui/passwords/passwords_model_delegate.h" +#include "chrome/browser/ui/views/passwords/password_bubble_view_base.h" +#include "chrome/grit/generated_resources.h" +#include "ui/base/l10n/l10n_util.h" PrivacyNoticeBubbleViewController::PrivacyNoticeBubbleViewController( base::WeakPtr<PasswordsModelDelegate> delegate) @@ -21,8 +24,8 @@ } std::u16string PrivacyNoticeBubbleViewController::GetTitle() const { - // TODO(crbug.com/381053884): Add string. - return u"Lorem ipsum"; + return l10n_util::GetStringUTF16( + IDS_PASSWORD_MANAGER_UI_PASSWORD_CHANGE_PRIVACY_NOTICE_TITLE); } void PrivacyNoticeBubbleViewController::ReportInteractions() { @@ -32,3 +35,8 @@ void PrivacyNoticeBubbleViewController::AcceptNotice() { password_change_delegate_->OnPrivacyNoticeAccepted(); } + +void PrivacyNoticeBubbleViewController::Cancel() { + CHECK(password_change_delegate_); + password_change_delegate_->Stop(); +}
diff --git a/chrome/browser/ui/passwords/bubble_controllers/password_change/privacy_notice_bubble_view_controller.h b/chrome/browser/ui/passwords/bubble_controllers/password_change/privacy_notice_bubble_view_controller.h index 17300570..c73c94e 100644 --- a/chrome/browser/ui/passwords/bubble_controllers/password_change/privacy_notice_bubble_view_controller.h +++ b/chrome/browser/ui/passwords/bubble_controllers/password_change/privacy_notice_bubble_view_controller.h
@@ -23,6 +23,9 @@ void AcceptNotice(); + // Cancels the flow. + void Cancel(); + private: base::WeakPtr<PasswordChangeDelegate> password_change_delegate_; };
diff --git a/chrome/browser/ui/passwords/bubble_controllers/password_change/successful_password_change_bubble_controller.cc b/chrome/browser/ui/passwords/bubble_controllers/password_change/successful_password_change_bubble_controller.cc index c50af21..d696452 100644 --- a/chrome/browser/ui/passwords/bubble_controllers/password_change/successful_password_change_bubble_controller.cc +++ b/chrome/browser/ui/passwords/bubble_controllers/password_change/successful_password_change_bubble_controller.cc
@@ -6,7 +6,9 @@ #include "base/memory/weak_ptr.h" #include "chrome/browser/ui/passwords/passwords_model_delegate.h" +#include "chrome/grit/branded_strings.h" #include "chrome/grit/generated_resources.h" +#include "components/strings/grit/components_strings.h" #include "ui/base/l10n/l10n_util.h" SuccessfulPasswordChangeBubbleController:: @@ -47,6 +49,20 @@ password_change_delegate_->Stop(); } +void SuccessfulPasswordChangeBubbleController::AuthenticateUser( + base::OnceCallback<void(bool)> auth_callback) { + std::u16string message; +#if BUILDFLAG(IS_MAC) + message = l10n_util::GetStringUTF16( + IDS_PASSWORDS_PAGE_AUTHENTICATION_PROMPT_BIOMETRIC_SUFFIX); +#elif BUILDFLAG(IS_WIN) + message = l10n_util::GetStringUTF16(IDS_PASSWORDS_PAGE_AUTHENTICATION_PROMPT); +#endif + if (delegate_) { + delegate_->AuthenticateUserWithMessage(message, std::move(auth_callback)); + } +} + std::u16string SuccessfulPasswordChangeBubbleController::GetDisplayOrigin() const { // TODO(crbug.com/381054978): Return correct domain.
diff --git a/chrome/browser/ui/passwords/bubble_controllers/password_change/successful_password_change_bubble_controller.h b/chrome/browser/ui/passwords/bubble_controllers/password_change/successful_password_change_bubble_controller.h index 49703474..fc104ab 100644 --- a/chrome/browser/ui/passwords/bubble_controllers/password_change/successful_password_change_bubble_controller.h +++ b/chrome/browser/ui/passwords/bubble_controllers/password_change/successful_password_change_bubble_controller.h
@@ -24,6 +24,7 @@ void OpenPasswordManager(); void FinishPasswordChange(); + void AuthenticateUser(base::OnceCallback<void(bool)> auth_callback); std::u16string GetDisplayOrigin() const; std::u16string GetUsername() const;
diff --git a/chrome/browser/ui/views/autofill/payments/save_card_bubble_views_browsertest.cc b/chrome/browser/ui/views/autofill/payments/save_card_bubble_views_browsertest.cc index eda2f65..f0ef63c 100644 --- a/chrome/browser/ui/views/autofill/payments/save_card_bubble_views_browsertest.cc +++ b/chrome/browser/ui/views/autofill/payments/save_card_bubble_views_browsertest.cc
@@ -1031,16 +1031,10 @@ : public SaveCardBubbleViewsFullFormBrowserTest { protected: SaveCardBubbleViewsSyncTransportFullFormBrowserTest() { - // Add wallet data type to the list of enabled types. - std::vector<base::test::FeatureRef> enabled_features = { - features::kAutofillUpstream}; - std::vector<base::test::FeatureRef> disabled_features = {}; - // Since server card saves upload address information, they are only offered - // when addresses are being synced. Enable CONTACT_INFO in transport mode. - enabled_features.push_back(switches::kExplicitBrowserSigninUIOnDesktop); - enabled_features.push_back( - syncer::kSyncEnableContactInfoDataTypeInTransportMode); - feature_list_.InitWithFeatures(enabled_features, disabled_features); + feature_list_.InitWithFeatures( + /*enabled_features=*/{features::kAutofillUpstream, + switches::kExplicitBrowserSigninUIOnDesktop}, + /*disabled_features=*/{}); } public:
diff --git a/chrome/browser/ui/views/page_info/merchant_trust_side_panel_coordinator.cc b/chrome/browser/ui/views/page_info/merchant_trust_side_panel_coordinator.cc index 1808702..6db49b8 100644 --- a/chrome/browser/ui/views/page_info/merchant_trust_side_panel_coordinator.cc +++ b/chrome/browser/ui/views/page_info/merchant_trust_side_panel_coordinator.cc
@@ -35,9 +35,11 @@ namespace { content::OpenURLParams CreateOpenUrlParams(const GURL& url) { return content::OpenURLParams( - net::AppendOrReplaceQueryParameter(url, - kMerchantTrustContextParameterName, - kMerchantTrustContextParameterValue), + net::AppendOrReplaceRef( + net::AppendOrReplaceQueryParameter( + url, kMerchantTrustContextParameterName, + kMerchantTrustContextParameterValue), + kMerchantTrustRef), content::Referrer(), WindowOpenDisposition::NEW_FOREGROUND_TAB, ui::PAGE_TRANSITION_LINK, /*is_renderer_initiated=*/false); }
diff --git a/chrome/browser/ui/views/page_info/merchant_trust_side_panel_coordinator_browsertest.cc b/chrome/browser/ui/views/page_info/merchant_trust_side_panel_coordinator_browsertest.cc index 2f261e2f8..c869b03 100644 --- a/chrome/browser/ui/views/page_info/merchant_trust_side_panel_coordinator_browsertest.cc +++ b/chrome/browser/ui/views/page_info/merchant_trust_side_panel_coordinator_browsertest.cc
@@ -13,6 +13,7 @@ #include "chrome/browser/ui/page_info/merchant_trust_side_panel.h" #include "chrome/browser/ui/ui_features.h" #include "chrome/browser/ui/views/frame/browser_view.h" +#include "chrome/browser/ui/views/page_info/web_view_side_panel_view.h" #include "chrome/browser/ui/views/side_panel/side_panel.h" #include "chrome/browser/ui/views/side_panel/side_panel_coordinator.h" #include "chrome/browser/ui/views/side_panel/side_panel_entry.h" @@ -320,3 +321,20 @@ EXPECT_FALSE(side_panel_coordinator()->IsSidePanelShowing()); ASSERT_EQ(side_panel_coordinator()->GetCurrentEntryId(), std::nullopt); } + +IN_PROC_BROWSER_TEST_F(MerchantTrustSidePanelCoordinatorBrowserTest, + SidePanelEntryUrlHasQueryParams) { + ShowMerchantTrustSidePanel(web_contents(), CreateUrl(kMerchantReviewsUrl)); + EXPECT_TRUE(side_panel_coordinator()->IsSidePanelShowing()); + EXPECT_EQ(side_panel_coordinator()->GetCurrentEntryId(), + SidePanelEntry::Id::kMerchantTrust); + + auto view = side_panel_coordinator() + ->GetCurrentSidePanelEntryForTesting() + ->GetContent(); + auto* side_panel_view = static_cast<WebViewSidePanelView*>(view.get()); + + EXPECT_EQ(side_panel_view->GetLastUrlForTesting(), + CreateUrl(kMerchantReviewsUrl).spec() + + "?s=CHROME_SIDE_PANEL#reviews"); +}
diff --git a/chrome/browser/ui/views/page_info/web_view_side_panel_view.cc b/chrome/browser/ui/views/page_info/web_view_side_panel_view.cc index fb56ab6..b8df89f 100644 --- a/chrome/browser/ui/views/page_info/web_view_side_panel_view.cc +++ b/chrome/browser/ui/views/page_info/web_view_side_panel_view.cc
@@ -24,6 +24,7 @@ #include "ui/views/accessibility/view_accessibility.h" #include "ui/views/layout/flex_layout_types.h" #include "ui/views/layout/flex_layout_view.h" +#include "url/gurl.h" #include "url/origin.h" namespace { @@ -99,6 +100,10 @@ content::NavigationController::LoadURLParams(params)); } +GURL WebViewSidePanelView::GetLastUrlForTesting() { + return last_url_; +} + // This method is called when the WebContents wants to open a link in a new // tab. This delegate does not override AddNewContents(), so the webcontents // is not actually created. Instead it forwards the parameters to the real @@ -181,13 +186,6 @@ } } -bool WebViewSidePanelView::IsNavigationAllowed(const GURL& new_url, - const GURL& old_url) { - // Only allow the initial navigation of the SidePanel to stay in the - // SidePanel. Other navigations will be moved to the main browser. - return new_url == last_url_; -} - GURL WebViewSidePanelView::CleanUpQueryParams(const GURL& url) { // Override eventual parameter for navigations to a real tab. if (url::IsSameOriginWith(url, last_url_) &&
diff --git a/chrome/browser/ui/views/page_info/web_view_side_panel_view.h b/chrome/browser/ui/views/page_info/web_view_side_panel_view.h index 13ba8bd..9d787ea 100644 --- a/chrome/browser/ui/views/page_info/web_view_side_panel_view.h +++ b/chrome/browser/ui/views/page_info/web_view_side_panel_view.h
@@ -11,6 +11,7 @@ #include "content/public/browser/web_contents_delegate.h" #include "content/public/browser/web_contents_observer.h" #include "ui/views/layout/flex_layout_view.h" +#include "url/gurl.h" class BrowserView; @@ -44,6 +45,8 @@ return weak_ptr_factory_.GetWeakPtr(); } + GURL GetLastUrlForTesting(); + private: // Remove parameters that shouldn't be passed to the main browser. GURL CleanUpQueryParams(const GURL& url); @@ -53,7 +56,6 @@ // WebViewSidePanelWebContentsUserData::Delegate void OpenUrlInBrowser(const content::OpenURLParams& params) override; - bool IsNavigationAllowed(const GURL& new_url, const GURL& old_url) override; // content::WebContentsObserver: void LoadProgressChanged(double progress) override;
diff --git a/chrome/browser/ui/views/passwords/password_change/password_change_ui_browsertest.cc b/chrome/browser/ui/views/passwords/password_change/password_change_ui_browsertest.cc new file mode 100644 index 0000000..54d9ef1 --- /dev/null +++ b/chrome/browser/ui/views/passwords/password_change/password_change_ui_browsertest.cc
@@ -0,0 +1,73 @@ +// Copyright 2025 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/affiliations/affiliation_service_factory.h" +#include "chrome/browser/password_manager/chrome_password_change_service.h" +#include "chrome/browser/password_manager/password_change_service_factory.h" +#include "chrome/browser/ui/browser.h" +#include "chrome/browser/ui/test/test_browser_dialog.h" +#include "chrome/browser/ui/views/passwords/password_bubble_view_base.h" +#include "chrome/test/base/ui_test_utils.h" +#include "components/affiliations/core/browser/mock_affiliation_service.h" +#include "components/keyed_service/content/browser_context_dependency_manager.h" +#include "content/public/browser/web_contents.h" +#include "content/public/test/browser_test.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "url/gurl.h" + +using affiliations::AffiliationService; +using affiliations::MockAffiliationService; + +namespace { +std::unique_ptr<KeyedService> CreateTestAffiliationService( + content::BrowserContext* context) { + return std::make_unique<testing::NiceMock<MockAffiliationService>>(); +} +} // namespace + +class PasswordChangeUiBrowserTest : public DialogBrowserTest { + public: + void SetUpInProcessBrowserTestFixture() override { + create_services_subscription_ = + BrowserContextDependencyManager::GetInstance() + ->RegisterCreateServicesCallbackForTesting( + base::BindRepeating([](content::BrowserContext* context) { + AffiliationServiceFactory::GetInstance()->SetTestingFactory( + context, + base::BindRepeating(&CreateTestAffiliationService)); + })); + } + + MockAffiliationService* affiliation_service() { + return static_cast<MockAffiliationService*>( + AffiliationServiceFactory::GetForProfile(browser()->profile())); + } + + private: + void ShowUi(const std::string& name) override { + GURL main_url = GURL("https://example.com/"); + GURL password_change_url = GURL("https://example.com/password"); + ON_CALL(*affiliation_service(), GetChangePasswordURL(main_url)) + .WillByDefault(testing::Return(password_change_url)); + content::WebContents* web_contents = + browser()->tab_strip_model()->GetActiveWebContents(); + if (StartsWith(name, "PrivacyNotice", base::CompareCase::SENSITIVE)) { + password_change_service()->StartPasswordChange(main_url, u"test", + u"password", web_contents); + } + PasswordBubbleViewBase::ShowBubble( + web_contents, LocationBarBubbleDelegateView::USER_GESTURE); + } + + ChromePasswordChangeService* password_change_service() { + return PasswordChangeServiceFactory::GetForProfile(browser()->profile()); + } + + base::CallbackListSubscription create_services_subscription_; +}; + +IN_PROC_BROWSER_TEST_F(PasswordChangeUiBrowserTest, InvokeUi_PrivacyNotice) { + ShowAndVerifyUi(); +}
diff --git a/chrome/browser/ui/views/passwords/password_change/privacy_notice_view.cc b/chrome/browser/ui/views/passwords/password_change/privacy_notice_view.cc index 4528949..243f442 100644 --- a/chrome/browser/ui/views/passwords/password_change/privacy_notice_view.cc +++ b/chrome/browser/ui/views/passwords/password_change/privacy_notice_view.cc
@@ -4,10 +4,94 @@ #include "chrome/browser/ui/views/passwords/password_change/privacy_notice_view.h" +#include <memory> + #include "chrome/browser/ui/passwords/bubble_controllers/password_change/privacy_notice_bubble_view_controller.h" #include "chrome/browser/ui/passwords/passwords_model_delegate.h" +#include "chrome/browser/ui/views/chrome_layout_provider.h" +#include "chrome/grit/generated_resources.h" +#include "components/vector_icons/vector_icons.h" #include "content/public/browser/web_contents.h" +#include "ui/base/l10n/l10n_util.h" #include "ui/base/metadata/metadata_impl_macros.h" +#include "ui/color/color_id.h" +#include "ui/views/controls/button/image_button.h" +#include "ui/views/controls/button/image_button_factory.h" +#include "ui/views/layout/box_layout_view.h" +#include "ui/views/layout/fill_layout.h" +#include "ui/views/layout/layout_types.h" +#include "ui/views/layout/table_layout_view.h" +#include "ui/views/style/typography.h" +#include "ui/views/vector_icons.h" + +using TableLayout = views::TableLayout; +using LayoutAlignment = views::LayoutAlignment; +using ClosedReason = views::Widget::ClosedReason; + +namespace { +// The corner radius of the text area in the bubble. +const float kCornerRadius = 12; +constexpr int kIconSize = 16; + +std::unique_ptr<views::View> CreateLabel(const std::u16string& text, + int style) { + auto label = std::make_unique<views::Label>(); + label->SetText(text); + label->SetTextStyle(style); + label->SetMultiLine(true); + label->SetHorizontalAlignment(gfx::ALIGN_LEFT); + return label; +} + +void CreateRow(views::View& table_root_view, + const gfx::VectorIcon& icon_id, + int string_id) { + table_root_view.AddChildView(std::make_unique<views::ImageView>( + ui::ImageModel::FromVectorIcon(icon_id, ui::kColorIcon, kIconSize))); + table_root_view.AddChildView(CreateLabel(l10n_util::GetStringUTF16(string_id), + views::style::STYLE_SECONDARY)); +} + +std::unique_ptr<views::View> CreateThingsToConsiderList() { + const views::LayoutProvider* provider = views::LayoutProvider::Get(); + const int related_control_padding = + provider->GetDistanceMetric(views::DISTANCE_RELATED_CONTROL_VERTICAL); + const int label_padding = + provider->GetDistanceMetric(views::DISTANCE_RELATED_LABEL_HORIZONTAL); + + auto table_root_view = std::make_unique<views::TableLayoutView>(); + table_root_view + ->AddColumn(LayoutAlignment::kCenter, LayoutAlignment::kCenter, + TableLayout::kFixedSize, TableLayout::ColumnSize::kFixed, + kIconSize, kIconSize) + .AddPaddingColumn(TableLayout::kFixedSize, label_padding) + .AddColumn(LayoutAlignment::kStretch, LayoutAlignment::kStretch, 1.0f, + TableLayout::ColumnSize::kUsePreferred, 0, 0) + .AddRows(1, TableLayout::kFixedSize) + .AddPaddingRow(TableLayout::kFixedSize, related_control_padding) + .AddRows(1, TableLayout::kFixedSize) + .AddPaddingRow(TableLayout::kFixedSize, related_control_padding) + .AddRows(1, TableLayout::kFixedSize) + .AddPaddingRow(TableLayout::kFixedSize, related_control_padding) + .AddRows(1, TableLayout::kFixedSize); + + // TODO (crbug.com/381053884): Add correct icons here. + CreateRow( + *table_root_view, views::kPsychiatryIcon, + IDS_PASSWORD_MANAGER_UI_PASSWORD_CHANGE_PRIVACY_NOTICE_ITEM_EXPERIMENTAL); + CreateRow( + *table_root_view, vector_icons::kGoogleColorIcon, + IDS_PASSWORD_MANAGER_UI_PASSWORD_CHANGE_PRIVACY_NOTICE_ITEM_SENT_TO_GOOGLE); + CreateRow( + *table_root_view, views::kAccountBoxIcon, + IDS_PASSWORD_MANAGER_UI_PASSWORD_CHANGE_PRIVACY_NOTICE_ITEM_HUMAN_REVIEW); + CreateRow( + *table_root_view, vector_icons::kLockIcon, + IDS_PASSWORD_MANAGER_UI_PASSWORD_CHANGE_PRIVACY_NOTICE_ITEM_ENCRYPTED); + return table_root_view; +} + +} // namespace PrivacyNoticeView::PrivacyNoticeView(content::WebContents* web_contents, views::View* anchor_view) @@ -15,10 +99,50 @@ anchor_view, /*easily_dismissable=*/true), controller_(PasswordsModelDelegateFromWebContents(web_contents)) { - SetButtons(static_cast<int>(ui::mojom::DialogButton::kOk)); + SetLayoutManager(std::make_unique<views::FillLayout>()); + auto* root_view = AddChildView(std::make_unique<views::BoxLayoutView>()); + + root_view->SetOrientation(views::LayoutOrientation::kVertical); + root_view->SetInsideBorderInsets( + gfx::Insets::VH(ChromeLayoutProvider::Get()->GetDistanceMetric( + DISTANCE_CONTROL_LIST_VERTICAL), + ChromeLayoutProvider::Get()->GetDistanceMetric( + DISTANCE_CONTROL_LIST_VERTICAL))); + root_view->SetCrossAxisAlignment(views::LayoutAlignment::kStretch); + + root_view->SetBackground(views::CreateThemedRoundedRectBackground( + ui::kColorSysSurface4, + /*top_radius=*/kCornerRadius, + /*bottom_radius=*/kCornerRadius)); + root_view->AddChildView(CreateLabel( + l10n_util::GetStringUTF16( + IDS_PASSWORD_MANAGER_UI_PASSWORD_CHANGE_PRIVACY_NOTICE_SUBTITLE), + views::style::STYLE_EMPHASIZED)); + root_view->AddChildView(CreateThingsToConsiderList()); + + SetButtons(static_cast<int>(ui::mojom::DialogButton::kOk) | + static_cast<int>(ui::mojom::DialogButton::kCancel)); + SetButtonLabel(ui::mojom::DialogButton::kOk, + l10n_util::GetStringUTF16( + IDS_PASSWORD_MANAGER_UI_PASSWORD_CHANGE_CONTINUE)); + SetButtonLabel(ui::mojom::DialogButton::kCancel, + l10n_util::GetStringUTF16( + IDS_PASSWORD_MANAGER_UI_PASSWORD_CHANGE_CANCEL)); SetAcceptCallback( base::BindOnce(&PrivacyNoticeBubbleViewController::AcceptNotice, base::Unretained(&controller_))); + SetCancelCallback(base::BindOnce(&PrivacyNoticeBubbleViewController::Cancel, + base::Unretained(&controller_))); + SetCloseCallback(base::BindRepeating( + [](PrivacyNoticeView* view) { + ClosedReason reason = view->GetWidget()->closed_reason(); + // Cancel the flow if the dialog is explicitly closed. + if (reason == ClosedReason::kCloseButtonClicked || + reason == ClosedReason::kEscKeyPressed) { + view->controller_.Cancel(); + } + }, + this)); } PrivacyNoticeView::~PrivacyNoticeView() = default;
diff --git a/chrome/browser/ui/views/passwords/password_change/privacy_notice_view_unittest.cc b/chrome/browser/ui/views/passwords/password_change/privacy_notice_view_unittest.cc index 5cfada51..c3adc8a 100644 --- a/chrome/browser/ui/views/passwords/password_change/privacy_notice_view_unittest.cc +++ b/chrome/browser/ui/views/passwords/password_change/privacy_notice_view_unittest.cc
@@ -65,3 +65,12 @@ views::test::ButtonTestApi(view()->GetOkButton()) .NotifyClick(ui::test::TestEvent()); } + +TEST_F(PrivacyNoticeViewTest, CancelClosesTheBubbleAndCancelsTheFlow) { + CreateAndShowView(); + + EXPECT_CALL(*password_change_delegate(), Stop); + EXPECT_CALL(*model_delegate_mock(), OnBubbleHidden); + views::test::ButtonTestApi(view()->GetCancelButton()) + .NotifyClick(ui::test::TestEvent()); +}
diff --git a/chrome/browser/ui/views/passwords/password_change/successful_password_change_view.cc b/chrome/browser/ui/views/passwords/password_change/successful_password_change_view.cc index bd00fbbd..7b25d36 100644 --- a/chrome/browser/ui/views/passwords/password_change/successful_password_change_view.cc +++ b/chrome/browser/ui/views/passwords/password_change/successful_password_change_view.cc
@@ -56,7 +56,7 @@ return username_label; } -std::unique_ptr<views::View> CreatePasswordLabel( +std::unique_ptr<views::Label> CreatePasswordLabel( const std::u16string& password) { std::unique_ptr<views::Label> label = std::make_unique<views::Label>( password, views::style::CONTEXT_DIALOG_BODY_TEXT); @@ -82,8 +82,9 @@ // | | Password | | // *--------------------------------------------------------* std::unique_ptr<views::View> CreateUsernamePasswordWithEyeIcon( - const std::u16string& username, - const std::u16string& password) { + SuccessfulPasswordChangeBubbleController* controller) { + CHECK(controller); + auto parent_view = std::make_unique<views::BoxLayoutView>(); parent_view->SetInsideBorderInsets(ComputeRowMargins()); @@ -106,9 +107,10 @@ parent_view->AddChildView(CreateVerticalStackView()); username_password_view->SetProperty(views::kBoxLayoutFlexKey, views::BoxLayoutFlexSpecification()); - username_password_view->AddChildView(CreateUsernameLabel(username)); - auto* password_label = - username_password_view->AddChildView(CreatePasswordLabel(password)); + username_password_view->AddChildView( + CreateUsernameLabel(controller->GetUsername())); + views::Label* password_label = username_password_view->AddChildView( + CreatePasswordLabel(controller->GetNewPassword())); // Add eye icon which allows to reveal a password. auto* eye_icon = parent_view->AddChildView( @@ -122,15 +124,34 @@ ui::kColorIcon, ui::kColorIcon); views::SetToggledImageFromVectorIconWithColorId( eye_icon, views::kEyeCrossedIcon, ui::kColorIcon, ui::kColorIcon); + + base::RepeatingCallback<void(bool)> auth_result_callback = + base::BindRepeating( + [](views::ToggleImageButton* toggle_button, + views::Label* password_label, bool auth_result) { + if (!auth_result) { + return; + } + password_label->SetObscured(!password_label->GetObscured()); + toggle_button->SetToggled(!toggle_button->GetToggled()); + }, + eye_icon, password_label); + eye_icon->SetCallback(base::BindRepeating( - [](views::ToggleImageButton* toggle_button, - views::Label* password_label) { - // TODO(crbug.com/381054978): Trigger auth before revealing the - // password. - password_label->SetObscured(!password_label->GetObscured()); - toggle_button->SetToggled(!toggle_button->GetToggled()); + [](base::WeakPtr<SuccessfulPasswordChangeBubbleController> controller, + views::Label* password_label, + base::RepeatingCallback<void(bool)> auth_callback) { + if (!password_label->GetObscured()) { + // Run callback to hide the password. No auth needed to do it. + auth_callback.Run(true); + return; + } + if (controller) { + controller->AuthenticateUser(auth_callback); + } }, - eye_icon, static_cast<views::Label*>(password_label))); + controller->GetWeakPtr(), password_label, + std::move(auth_result_callback))); eye_icon->SetID(SuccessfulPasswordChangeView::kEyeIconButtonId); return parent_view; @@ -197,8 +218,7 @@ set_margins(gfx::Insets()); root_view->AddChildView(CreateBodyText(controller_->GetDisplayOrigin())); - root_view->AddChildView(CreateUsernamePasswordWithEyeIcon( - controller_->GetUsername(), controller_->GetNewPassword())); + root_view->AddChildView(CreateUsernamePasswordWithEyeIcon(controller_.get())); root_view->AddChildView(std::make_unique<views::Separator>()); root_view->AddChildView(CreateManagePasswordsView(base::BindRepeating( &SuccessfulPasswordChangeBubbleController::OpenPasswordManager,
diff --git a/chrome/browser/ui/views/passwords/password_change/successful_password_change_view_unittest.cc b/chrome/browser/ui/views/passwords/password_change/successful_password_change_view_unittest.cc index 14bdb79..1e4ae47 100644 --- a/chrome/browser/ui/views/passwords/password_change/successful_password_change_view_unittest.cc +++ b/chrome/browser/ui/views/passwords/password_change/successful_password_change_view_unittest.cc
@@ -8,6 +8,7 @@ #include <string> #include "base/strings/utf_string_conversions.h" +#include "base/test/gmock_callback_support.h" #include "chrome/browser/password_manager/password_change_delegate.h" #include "chrome/browser/password_manager/password_change_delegate_mock.h" #include "chrome/browser/ui/views/passwords/manage_passwords_view_ids.h" @@ -119,12 +120,25 @@ EXPECT_TRUE(GetLabelById(SuccessfulPasswordChangeView::kPasswordLabelId) ->GetObscured()); + views::Button* eye_icon = static_cast<views::Button*>( + view()->GetViewByID(SuccessfulPasswordChangeView::kEyeIconButtonId)); + EXPECT_TRUE(eye_icon); - views::test::ButtonTestApi( - static_cast<views::Button*>( - view()->GetViewByID(SuccessfulPasswordChangeView::kEyeIconButtonId))) - .NotifyClick(ui::test::TestEvent()); + // Verify that auth is invoked and act like it was successful. + EXPECT_CALL(*model_delegate_mock(), AuthenticateUserWithMessage) + .WillOnce(base::test::RunOnceCallback<1>(true)); + views::test::ButtonTestApi(eye_icon).NotifyClick(ui::test::TestEvent()); + // Verify password is revealed. EXPECT_FALSE(GetLabelById(SuccessfulPasswordChangeView::kPasswordLabelId) ->GetObscured()); + + testing::Mock::VerifyAndClearExpectations(model_delegate_mock()); + // Auth shouldn't be invoked when hiding the password. + EXPECT_CALL(*model_delegate_mock(), AuthenticateUserWithMessage).Times(0); + views::test::ButtonTestApi(eye_icon).NotifyClick(ui::test::TestEvent()); + + // Verify password is hidden. + EXPECT_TRUE(GetLabelById(SuccessfulPasswordChangeView::kPasswordLabelId) + ->GetObscured()); }
diff --git a/chrome/browser/ui/views/payments/shipping_address_editor_view_controller.cc b/chrome/browser/ui/views/payments/shipping_address_editor_view_controller.cc index ed5629d2..512f630 100644 --- a/chrome/browser/ui/views/payments/shipping_address_editor_view_controller.cc +++ b/chrome/browser/ui/views/payments/shipping_address_editor_view_controller.cc
@@ -138,9 +138,10 @@ switch (type) { case autofill::ADDRESS_HOME_COUNTRY: { auto model = std::make_unique<autofill::CountryComboboxModel>(); - model->SetCountries(*state()->GetPersonalDataManager(), - base::RepeatingCallback<bool(const std::string&)>(), - state()->GetApplicationLocale()); + model->SetCountries( + state()->GetPersonalDataManager()->address_data_manager(), + base::RepeatingCallback<bool(const std::string&)>(), + state()->GetApplicationLocale()); if (model->countries().size() != countries_.size()) { UpdateCountries(model.get()); } @@ -392,7 +393,7 @@ autofill::CountryComboboxModel local_model; if (!model) { local_model.SetCountries( - *state()->GetPersonalDataManager(), + state()->GetPersonalDataManager()->address_data_manager(), base::RepeatingCallback<bool(const std::string&)>(), state()->GetApplicationLocale()); model = &local_model;
diff --git a/chrome/browser/ui/views/permissions/embedded_permission_prompt.cc b/chrome/browser/ui/views/permissions/embedded_permission_prompt.cc index 11fc6183..562ae53d 100644 --- a/chrome/browser/ui/views/permissions/embedded_permission_prompt.cc +++ b/chrome/browser/ui/views/permissions/embedded_permission_prompt.cc
@@ -34,114 +34,31 @@ using content_settings::SettingSource; +using Variant = permissions::EmbeddedPermissionPromptFlowModel::Variant; + // An upper bound on the maximum number of screens that we can record in // metrics. Practically speaking the actual number should never be more than 3 // but a higher bound allows us to detect via metrics if this happens in the // wild. constexpr int SCREEN_COUNTER_MAXIMUM = 10; -bool CanGroupVariants(EmbeddedPermissionPrompt::Variant a, - EmbeddedPermissionPrompt::Variant b) { - // Ask and PreviouslyDenied are a special case and can be grouped together. - if ((a == EmbeddedPermissionPrompt::Variant::kPreviouslyDenied && - b == EmbeddedPermissionPrompt::Variant::kAsk) || - (a == EmbeddedPermissionPrompt::Variant::kAsk && - b == EmbeddedPermissionPrompt::Variant::kPreviouslyDenied)) { - return true; - } - - return (a == b); -} - -bool IsPermissionSetByAdministator(ContentSetting setting, - const content_settings::SettingInfo& info) { - return ((setting == ContentSetting::CONTENT_SETTING_BLOCK || - setting == ContentSetting::CONTENT_SETTING_ALLOW) && - (info.source == SettingSource::kPolicy || - info.source == SettingSource::kSupervised)); -} - -// TODO(41014586): Integrate policy-set media permissions into -// SettingsSource.policy. Currently, AudioCaptureAllowed, VideoCaptureAllowed -// are not checked within |IsPermissionSetByAdministrator|, so -// |IsPermissionBlockedByDevicePolicy| and |IsPermissionAllowedByDevicePolicy| -// methods are needed to show the appropriate policy screen. -bool IsPermissionBlockedByDevicePolicy( - content::WebContents* web_contents, - ContentSetting setting, - const content_settings::SettingInfo& info, - ContentSettingsType type) { - if (IsPermissionSetByAdministator(setting, info) && - setting == CONTENT_SETTING_BLOCK) { - return true; - } - - Profile* profile = - Profile::FromBrowserContext(web_contents->GetBrowserContext()); - if (type == ContentSettingsType::MEDIASTREAM_MIC) { - return GetDevicePolicy(profile, web_contents->GetLastCommittedURL(), - prefs::kAudioCaptureAllowed, - prefs::kAudioCaptureAllowedUrls) == - MediaStreamDevicePolicy::ALWAYS_DENY; - } - - if (type == ContentSettingsType::MEDIASTREAM_CAMERA) { - return GetDevicePolicy(profile, web_contents->GetLastCommittedURL(), - prefs::kVideoCaptureAllowed, - prefs::kVideoCaptureAllowedUrls) == - MediaStreamDevicePolicy::ALWAYS_DENY; - } - - return false; -} - -bool IsPermissionAllowedByDevicePolicy( - content::WebContents* web_contents, - ContentSetting setting, - const content_settings::SettingInfo& info, - ContentSettingsType type) { - if (IsPermissionSetByAdministator(setting, info) && - setting == CONTENT_SETTING_ALLOW) { - return true; - } - - Profile* profile = - Profile::FromBrowserContext(web_contents->GetBrowserContext()); - if (type == ContentSettingsType::MEDIASTREAM_MIC) { - return GetDevicePolicy(profile, web_contents->GetLastCommittedURL(), - prefs::kAudioCaptureAllowed, - prefs::kAudioCaptureAllowedUrls) == - MediaStreamDevicePolicy::ALWAYS_ALLOW; - } - - if (type == ContentSettingsType::MEDIASTREAM_CAMERA) { - return GetDevicePolicy(profile, web_contents->GetLastCommittedURL(), - prefs::kVideoCaptureAllowed, - prefs::kVideoCaptureAllowedUrls) == - MediaStreamDevicePolicy::ALWAYS_ALLOW; - } - - return false; -} - -permissions::ElementAnchoredBubbleVariant GetVariant( - EmbeddedPermissionPrompt::Variant variant) { +permissions::ElementAnchoredBubbleVariant GetVariant(Variant variant) { switch (variant) { - case EmbeddedPermissionPrompt::Variant::kUninitialized: + case Variant::kUninitialized: return permissions::ElementAnchoredBubbleVariant::UNINITIALIZED; - case EmbeddedPermissionPrompt::Variant::kAdministratorGranted: + case Variant::kAdministratorGranted: return permissions::ElementAnchoredBubbleVariant::ADMINISTRATOR_GRANTED; - case EmbeddedPermissionPrompt::Variant::kPreviouslyGranted: + case Variant::kPreviouslyGranted: return permissions::ElementAnchoredBubbleVariant::PREVIOUSLY_GRANTED; - case EmbeddedPermissionPrompt::Variant::kOsSystemSettings: + case Variant::kOsSystemSettings: return permissions::ElementAnchoredBubbleVariant::OS_SYSTEM_SETTINGS; - case EmbeddedPermissionPrompt::Variant::kOsPrompt: + case Variant::kOsPrompt: return permissions::ElementAnchoredBubbleVariant::OS_PROMPT; - case EmbeddedPermissionPrompt::Variant::kAsk: + case Variant::kAsk: return permissions::ElementAnchoredBubbleVariant::ASK; - case EmbeddedPermissionPrompt::Variant::kPreviouslyDenied: + case Variant::kPreviouslyDenied: return permissions::ElementAnchoredBubbleVariant::PREVIOUSLY_DENIED; - case EmbeddedPermissionPrompt::Variant::kAdministratorDenied: + case Variant::kAdministratorDenied: return permissions::ElementAnchoredBubbleVariant::ADMINISTRATOR_DENIED; } @@ -155,6 +72,9 @@ permissions::PermissionPrompt::Delegate* delegate) : PermissionPromptDesktop(browser, web_contents, delegate), delegate_(delegate) { + prompt_model_ = + std::make_unique<permissions::EmbeddedPermissionPromptFlowModel>( + web_contents, delegate); CloseCurrentViewAndMaybeShowNext(/*first_prompt=*/true); } @@ -162,74 +82,17 @@ CloseViewAndScrim(); } -EmbeddedPermissionPrompt::Variant -EmbeddedPermissionPrompt::DeterminePromptVariant( - ContentSetting setting, - const content_settings::SettingInfo& info, - ContentSettingsType type) { - // If the administrator blocked the permission, there is nothing the user can - // do. Presenting them with a different screen in unproductive. - if (IsPermissionBlockedByDevicePolicy(web_contents(), setting, info, type)) { - return Variant::kAdministratorDenied; - } - - // Determine if we can directly show one of the OS views. The "System - // Settings" view is higher priority then all the other remaining options, - // whereas the "OS Prompt" view is only higher priority then the views that - // are associated with a site-level allowed state. - // TODO(crbug.com/40275129): Handle going to Windows settings. - if (system_permission_settings::IsDenied(type)) { - return Variant::kOsSystemSettings; - } - - if (setting == CONTENT_SETTING_ALLOW && - system_permission_settings::CanPrompt(type)) { - return Variant::kOsPrompt; - } - - if (IsPermissionAllowedByDevicePolicy(web_contents(), setting, info, type)) { - return Variant::kAdministratorGranted; - } - - switch (setting) { - case CONTENT_SETTING_ASK: - return Variant::kAsk; - case CONTENT_SETTING_ALLOW: - return Variant::kPreviouslyGranted; - case CONTENT_SETTING_BLOCK: - return Variant::kPreviouslyDenied; - default: - break; - } - - return Variant::kUninitialized; -} - void EmbeddedPermissionPrompt::CloseCurrentViewAndMaybeShowNext( bool first_prompt) { if (!first_prompt) { CloseView(); } - auto* map = HostContentSettingsMapFactory::GetForProfile( - Profile::FromBrowserContext(web_contents()->GetBrowserContext())); - content_settings::SettingInfo info; - - for (const auto& request : delegate()->Requests()) { - ContentSettingsType type = request->GetContentSettingsType(); - ContentSetting setting = - map->GetContentSetting(delegate()->GetRequestingOrigin(), - delegate()->GetEmbeddingOrigin(), type, &info); - Variant current_request_variant = - DeterminePromptVariant(setting, info, type); - PrioritizeAndMergeNewVariant(current_request_variant, type); - } - - RebuildRequests(); + prompt_model_->CalculateCurrentVariant(); EmbeddedPermissionPromptBaseView* prompt_view = nullptr; - switch (embedded_prompt_variant_) { + switch (prompt_variant()) { case Variant::kAsk: prompt_view = new EmbeddedPermissionPromptAskView( browser(), weak_factory_.GetWeakPtr()); @@ -331,7 +194,7 @@ permissions::OsScreen screen; - switch (embedded_prompt_variant_) { + switch (prompt_variant()) { case Variant::kOsPrompt: screen = permissions::OsScreen::OS_PROMPT; break; @@ -360,7 +223,7 @@ delegate_->Requests(), // This only contains the requests for the currently active screen, which // could sometimes be a subset of all requests for the entire prompt. - Requests(), action, GetVariant(embedded_prompt_variant_), + Requests(), action, GetVariant(prompt_variant()), prompt_screen_counter_for_metrics_, delegate_->GetRequestingOrigin(), delegate_->GetAssociatedWebContents(), delegate_->GetAssociatedWebContents()->GetBrowserContext()); @@ -378,12 +241,10 @@ } void EmbeddedPermissionPrompt::PrecalculateVariantsForMetrics() { - if (embedded_prompt_variant_ == Variant::kUninitialized) { + if (prompt_variant() == Variant::kUninitialized) { return; } - site_level_prompt_variant_ = embedded_prompt_variant_; - if (os_prompt_variant_ == Variant::kUninitialized) { for (const auto& request : delegate()->Requests()) { if (system_permission_settings::CanPrompt( @@ -411,8 +272,8 @@ // Current prompt variant when the user takes an action on a site level // prompt. - if (embedded_prompt_variant_ != Variant::kUninitialized) { - variants.push_back(GetVariant(embedded_prompt_variant_)); + if (prompt_variant() != Variant::kUninitialized) { + variants.push_back(GetVariant(prompt_variant())); } #if BUILDFLAG(IS_MAC) @@ -428,7 +289,7 @@ } bool EmbeddedPermissionPrompt::IsAskPrompt() const { - return (embedded_prompt_variant_ == Variant::kAsk); + return (prompt_variant() == Variant::kAsk); } std::optional<permissions::feature_params::PermissionElementPromptPosition> @@ -493,7 +354,7 @@ permissions::ElementAnchoredBubbleAction::kSystemSettings); system_permission_settings::OpenSystemSettings( delegate()->GetAssociatedWebContents(), - requests_[0]->GetContentSettingsType()); + Requests()[0]->GetContentSettingsType()); } base::WeakPtr<permissions::PermissionPrompt::Delegate> @@ -503,7 +364,7 @@ const std::vector<raw_ptr<permissions::PermissionRequest, VectorExperimental>>& EmbeddedPermissionPrompt::Requests() const { - return requests_; + return prompt_model_->requests(); } void EmbeddedPermissionPrompt::DismissScrim() { @@ -519,11 +380,12 @@ } void EmbeddedPermissionPrompt::PromptForOsPermission() { + const auto& prompt_types = prompt_model_->prompt_types(); // We currently support <=2 grouped permissions. - CHECK_LE(prompt_types_.size(), 2U); + CHECK_LE(prompt_types.size(), 2U); - std::vector<ContentSettingsType> types(prompt_types_.begin(), - prompt_types_.end()); + std::vector<ContentSettingsType> types(prompt_types.begin(), + prompt_types.end()); for (unsigned int idx = 0; idx < types.size(); idx++) { system_permission_settings::Request( @@ -588,48 +450,13 @@ } } -void EmbeddedPermissionPrompt::PrioritizeAndMergeNewVariant( - EmbeddedPermissionPrompt::Variant new_variant, - ContentSettingsType new_type) { - // The new variant can be grouped with the already existing one. - if (CanGroupVariants(embedded_prompt_variant_, new_variant)) { - prompt_types_.insert(new_type); - embedded_prompt_variant_ = std::max(embedded_prompt_variant_, new_variant); - return; - } - - // The existing variant is higher priority than the new one. - if (embedded_prompt_variant_ > new_variant) { - return; - } - - // The new variant has higher priority than the existing one. - prompt_types_.clear(); - prompt_types_.insert(new_type); - embedded_prompt_variant_ = new_variant; -} - -void EmbeddedPermissionPrompt::RebuildRequests() { - if (requests_.size() != prompt_types_.size()) { - const auto& requests = delegate()->Requests(); - for (permissions::PermissionRequest* request : requests) { - if (prompt_types_.contains(request->GetContentSettingsType())) { - requests_.push_back(request); - } - } - } -} - void EmbeddedPermissionPrompt::CloseView() { if (auto* prompt_view = static_cast<EmbeddedPermissionPromptBaseView*>( prompt_view_tracker_.view())) { prompt_view->PrepareToClose(); prompt_view->GetWidget()->Close(); prompt_view_tracker_.SetView(nullptr); - - requests_.clear(); - prompt_types_.clear(); - embedded_prompt_variant_ = Variant::kUninitialized; + prompt_model_->Clear(); } }
diff --git a/chrome/browser/ui/views/permissions/embedded_permission_prompt.h b/chrome/browser/ui/views/permissions/embedded_permission_prompt.h index 92d1af61..aa066c64 100644 --- a/chrome/browser/ui/views/permissions/embedded_permission_prompt.h +++ b/chrome/browser/ui/views/permissions/embedded_permission_prompt.h
@@ -16,6 +16,7 @@ #include "chrome/browser/ui/views/permissions/embedded_permission_prompt_view_delegate.h" #include "chrome/browser/ui/views/permissions/permission_prompt_desktop.h" #include "components/content_settings/core/common/content_settings_types.h" +#include "components/permissions/embedded_permission_prompt_flow_model.h" #include "components/permissions/permission_prompt.h" #include "components/permissions/permission_request.h" #include "components/permissions/request_type.h" @@ -38,33 +39,6 @@ EmbeddedPermissionPrompt(const EmbeddedPermissionPrompt&) = delete; EmbeddedPermissionPrompt& operator=(const EmbeddedPermissionPrompt&) = delete; - // Prompt views shown after the user clicks on the embedded permission prompt. - // The values represent the priority of each variant, higher number means - // higher priority. - enum class Variant { - // Default when conditions are not met to show any of the permission views. - kUninitialized = 0, - // Informs the user that the permission was allowed by their administrator. - kAdministratorGranted = 1, - // Permission prompt that informs the user they already granted permission. - // Offers additional options to modify the permission decision. - kPreviouslyGranted = 2, - // Informs the user that Chrome needs permission from the OS level, in order - // for the site to be able to access a permission. - kOsPrompt = 3, - // Permission prompt that asks the user for site-level permission. - kAsk = 4, - // Permission prompt that additionally informs the user that they have - // previously denied permission to the site. May offer different options - // (buttons) to the site-level prompt |kAsk|. - kPreviouslyDenied = 5, - // Informs the user that they need to go to OS system settings to grant - // access to Chrome. - kOsSystemSettings = 6, - // Informs the user that the permission was denied by their administrator. - kAdministratorDenied = 7, - }; - // A delegate for handling system permission requests such as requesting new // system permission or querying for current system permission settings. class SystemPermissionDelegate; @@ -105,14 +79,8 @@ kDeny, kDismiss, }; - Variant DeterminePromptVariant(ContentSetting setting, - const content_settings::SettingInfo& info, - ContentSettingsType type); - void PrecalculateVariantsForMetrics(); - void PrioritizeAndMergeNewVariant(Variant new_variant, - ContentSettingsType type); - void RebuildRequests(); + void PrecalculateVariantsForMetrics(); void RecordOsMetrics(permissions::OsScreenAction action); @@ -131,12 +99,18 @@ void FinalizePrompt(); void SendDelegateAction(Action action); - // Store precalculated OS variants for metrics - Variant site_level_prompt_variant_ = Variant::kUninitialized; - Variant os_prompt_variant_ = Variant::kUninitialized; - Variant os_system_settings_variant_ = Variant::kUninitialized; + permissions::EmbeddedPermissionPromptFlowModel::Variant prompt_variant() + const { + return prompt_model_->prompt_variant(); + } - Variant embedded_prompt_variant_ = Variant::kUninitialized; + // Store precalculated OS variants for metrics + permissions::EmbeddedPermissionPromptFlowModel::Variant os_prompt_variant_ = + permissions::EmbeddedPermissionPromptFlowModel::Variant::kUninitialized; + permissions::EmbeddedPermissionPromptFlowModel::Variant + os_system_settings_variant_ = permissions:: + EmbeddedPermissionPromptFlowModel::Variant::kUninitialized; + std::unique_ptr<views::Widget> content_scrim_widget_; views::ViewTracker prompt_view_tracker_; @@ -151,6 +125,7 @@ std::optional<Action> sent_action_ = std::nullopt; + std::unique_ptr<permissions::EmbeddedPermissionPromptFlowModel> prompt_model_; base::WeakPtrFactory<EmbeddedPermissionPrompt> weak_factory_{this}; };
diff --git a/chrome/browser/ui/views/webauthn/authenticator_dialog_view_browsertest.cc b/chrome/browser/ui/views/webauthn/authenticator_dialog_view_browsertest.cc index 5a9201d..e84f8d610 100644 --- a/chrome/browser/ui/views/webauthn/authenticator_dialog_view_browsertest.cc +++ b/chrome/browser/ui/views/webauthn/authenticator_dialog_view_browsertest.cc
@@ -15,7 +15,6 @@ #include "chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.h" #include "chrome/browser/ui/views/webauthn/authenticator_request_dialog_view_test_api.h" #include "chrome/browser/ui/views/webauthn/authenticator_request_sheet_view.h" -#include "chrome/browser/ui/webauthn/authenticator_request_dialog.h" #include "chrome/browser/ui/webauthn/authenticator_request_sheet_model.h" #include "chrome/browser/ui/webauthn/sheet_models.h" #include "chrome/browser/webauthn/authenticator_request_dialog_model.h"
diff --git a/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.cc b/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.cc index 34fb827d..87a14c8 100644 --- a/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.cc +++ b/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.cc
@@ -39,27 +39,25 @@ using Step = AuthenticatorRequestDialogModel::Step; -// static -void ShowAuthenticatorRequestDialog( +AuthenticatorRequestDialogView::AuthenticatorRequestDialogView( content::WebContents* web_contents, - scoped_refptr<AuthenticatorRequestDialogModel> model) { - // The authenticator request dialog will only be shown for common user-facing - // WebContents, which have a |manager|. Most other sources without managers, - // like service workers and extension background pages, do not allow WebAuthn - // requests to be issued in the first place. - // TODO(crbug.com/41392632): There are some niche WebContents where the - // WebAuthn API is available, but there is no |manager| available. Currently, - // we will not be able to show a dialog, so the |model| will be immediately - // destroyed. The request may be able to still run to completion if it does - // not require any user input, otherise it will be blocked and time out. We - // should audit this. - auto* manager = web_modal::WebContentsModalDialogManager::FromWebContents( - constrained_window::GetTopLevelWebContents(web_contents)); - if (!manager) { - return; - } + scoped_refptr<AuthenticatorRequestDialogModel> model) + : content::WebContentsObserver(web_contents), + model_(model), + web_contents_hidden_(web_contents->GetVisibility() == + content::Visibility::HIDDEN) { + SetShowTitle(false); + DCHECK(!model_->should_dialog_be_closed()); + model_->observers.AddObserver(this); - new AuthenticatorRequestDialogView(web_contents, std::move(model)); + SetModalType(ui::mojom::ModalType::kChild); + SetShowCloseButton(false); + set_fixed_width(views::LayoutProvider::Get()->GetDistanceMetric( + views::DISTANCE_MODAL_DIALOG_PREFERRED_WIDTH)); + + // Currently, all sheets have a label on top and controls at the bottom. + // Consider moving this to AuthenticatorRequestSheetView if this changes. + SetLayoutManager(std::make_unique<views::FillLayout>()); } AuthenticatorRequestDialogView::~AuthenticatorRequestDialogView() { @@ -316,27 +314,6 @@ } } -AuthenticatorRequestDialogView::AuthenticatorRequestDialogView( - content::WebContents* web_contents, - scoped_refptr<AuthenticatorRequestDialogModel> model) - : content::WebContentsObserver(web_contents), - model_(model), - web_contents_hidden_(web_contents->GetVisibility() == - content::Visibility::HIDDEN) { - SetShowTitle(false); - DCHECK(!model_->should_dialog_be_closed()); - model_->observers.AddObserver(this); - - SetModalType(ui::mojom::ModalType::kChild); - SetShowCloseButton(false); - set_fixed_width(views::LayoutProvider::Get()->GetDistanceMetric( - views::DISTANCE_MODAL_DIALOG_PREFERRED_WIDTH)); - - // Currently, all sheets have a label on top and controls at the bottom. - // Consider moving this to AuthenticatorRequestSheetView if this changes. - SetLayoutManager(std::make_unique<views::FillLayout>()); -} - void AuthenticatorRequestDialogView::Show() { if (!first_shown_) { views::Widget* widget =
diff --git a/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.h b/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.h index 5dec8f87..57ed4a2 100644 --- a/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.h +++ b/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.h
@@ -44,6 +44,10 @@ METADATA_HEADER(AuthenticatorRequestDialogView, views::DialogDelegateView) public: + // Show by calling AuthenticatorRequestDialogViewController::Show(). + AuthenticatorRequestDialogView( + content::WebContents* web_contents, + scoped_refptr<AuthenticatorRequestDialogModel> model); AuthenticatorRequestDialogView(const AuthenticatorRequestDialogView&) = delete; AuthenticatorRequestDialogView& operator=( @@ -92,14 +96,6 @@ private: friend class test::AuthenticatorRequestDialogViewTestApi; - friend void ShowAuthenticatorRequestDialog( - content::WebContents* web_contents, - scoped_refptr<AuthenticatorRequestDialogModel> model); - - // Show by calling ShowAuthenticatorRequestDialog(). - AuthenticatorRequestDialogView( - content::WebContents* web_contents, - scoped_refptr<AuthenticatorRequestDialogModel> model); // Shows the dialog after creation or after being hidden. void Show();
diff --git a/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view_controller_views.cc b/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view_controller_views.cc new file mode 100644 index 0000000..5518061 --- /dev/null +++ b/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view_controller_views.cc
@@ -0,0 +1,34 @@ +// Copyright 2025 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include <utility> + +#include "base/memory/scoped_refptr.h" +#include "chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.h" +#include "chrome/browser/ui/webauthn/authenticator_request_dialog_view_controller.h" +#include "components/constrained_window/constrained_window_views.h" +#include "components/web_modal/web_contents_modal_dialog_manager.h" + +// static +void AuthenticatorRequestDialogViewController::Show( + content::WebContents* web_contents, + scoped_refptr<AuthenticatorRequestDialogModel> model) { + // The authenticator request dialog will only be shown for common user-facing + // WebContents, which have a |manager|. Most other sources without managers, + // like service workers and extension background pages, do not allow WebAuthn + // requests to be issued in the first place. + // TODO(crbug.com/41392632): There are some niche WebContents where the + // WebAuthn API is available, but there is no |manager| available. Currently, + // we will not be able to show a dialog, so the |model| will be immediately + // destroyed. The request may be able to still run to completion if it does + // not require any user input, otherwise it will be blocked and time out. We + // should audit this. + auto* manager = web_modal::WebContentsModalDialogManager::FromWebContents( + constrained_window::GetTopLevelWebContents(web_contents)); + if (!manager) { + return; + } + + new AuthenticatorRequestDialogView(web_contents, std::move(model)); +}
diff --git a/chrome/browser/ui/web_applications/test/isolated_web_app_test_utils.cc b/chrome/browser/ui/web_applications/test/isolated_web_app_test_utils.cc index 1b08ec4..cae2a320 100644 --- a/chrome/browser/ui/web_applications/test/isolated_web_app_test_utils.cc +++ b/chrome/browser/ui/web_applications/test/isolated_web_app_test_utils.cc
@@ -112,6 +112,29 @@ window, url, disposition, ui_test_utils::BROWSER_TEST_WAIT_FOR_LOAD_STOP); } +UpdateDiscoveryTaskResultWaiter::UpdateDiscoveryTaskResultWaiter( + WebAppProvider& provider, + const webapps::AppId expected_app_id, + TaskResultCallback callback) + : expected_app_id_(expected_app_id), + callback_(std::move(callback)), + provider_(provider) { + observation_.Observe(&provider.iwa_update_manager()); +} + +UpdateDiscoveryTaskResultWaiter::~UpdateDiscoveryTaskResultWaiter() = default; + +// IsolatedWebAppUpdateManager::Observer: +void UpdateDiscoveryTaskResultWaiter::OnUpdateDiscoveryTaskCompleted( + const webapps::AppId& app_id, + IsolatedWebAppUpdateDiscoveryTask::CompletionStatus status) { + if (app_id != expected_app_id_) { + return; + } + std::move(callback_).Run(status); + observation_.Reset(); +} + std::unique_ptr<net::EmbeddedTestServer> CreateAndStartDevServer( const base::FilePath::StringPieceType& chrome_test_data_relative_root) { base::FilePath server_root =
diff --git a/chrome/browser/ui/web_applications/test/isolated_web_app_test_utils.h b/chrome/browser/ui/web_applications/test/isolated_web_app_test_utils.h index 9cd972f0..1d43751 100644 --- a/chrome/browser/ui/web_applications/test/isolated_web_app_test_utils.h +++ b/chrome/browser/ui/web_applications/test/isolated_web_app_test_utils.h
@@ -17,7 +17,9 @@ #include "chrome/browser/ui/web_applications/web_app_browsertest_base.h" #include "chrome/browser/web_applications/isolated_web_apps/isolated_web_app_source.h" #include "chrome/browser/web_applications/isolated_web_apps/isolated_web_app_storage_location.h" +#include "chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_manager.h" #include "chrome/browser/web_applications/web_app.h" +#include "chrome/browser/web_applications/web_app_provider.h" #include "components/version_info/channel.h" #include "components/webapps/browser/installable/installable_metrics.h" #include "extensions/common/features/feature_channel.h" @@ -75,6 +77,32 @@ extensions::ScopedCurrentChannel channel_{version_info::Channel::CANARY}; }; +class UpdateDiscoveryTaskResultWaiter + : public IsolatedWebAppUpdateManager::Observer { + using TaskResultCallback = base::OnceCallback<void( + IsolatedWebAppUpdateDiscoveryTask::CompletionStatus status)>; + + public: + UpdateDiscoveryTaskResultWaiter(WebAppProvider& provider, + const webapps::AppId expected_app_id, + TaskResultCallback callback); + ~UpdateDiscoveryTaskResultWaiter() override; + + // IsolatedWebAppUpdateManager::Observer: + void OnUpdateDiscoveryTaskCompleted( + const webapps::AppId& app_id, + IsolatedWebAppUpdateDiscoveryTask::CompletionStatus status) override; + + private: + const webapps::AppId expected_app_id_; + TaskResultCallback callback_; + const raw_ref<WebAppProvider> provider_; + + base::ScopedObservation<IsolatedWebAppUpdateManager, + IsolatedWebAppUpdateManager::Observer> + observation_{this}; +}; + std::unique_ptr<net::EmbeddedTestServer> CreateAndStartDevServer( const base::FilePath::StringPieceType& chrome_test_data_relative_root);
diff --git a/chrome/browser/ui/webauthn/authenticator_dialog_browsertest.cc b/chrome/browser/ui/webauthn/authenticator_dialog_browsertest.cc index b66c78ff..6938468 100644 --- a/chrome/browser/ui/webauthn/authenticator_dialog_browsertest.cc +++ b/chrome/browser/ui/webauthn/authenticator_dialog_browsertest.cc
@@ -15,7 +15,6 @@ #include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/browser/ui/test/test_browser_dialog.h" -#include "chrome/browser/ui/webauthn/authenticator_request_dialog.h" #include "chrome/browser/webauthn/authenticator_request_dialog_controller.h" #include "chrome/browser/webauthn/authenticator_request_dialog_model.h" #include "chrome/browser/webauthn/enclave_manager.h"
diff --git a/chrome/browser/ui/webauthn/authenticator_request_dialog.h b/chrome/browser/ui/webauthn/authenticator_request_dialog.h deleted file mode 100644 index 1f0f23b..0000000 --- a/chrome/browser/ui/webauthn/authenticator_request_dialog.h +++ /dev/null
@@ -1,22 +0,0 @@ -// Copyright 2018 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_BROWSER_UI_WEBAUTHN_AUTHENTICATOR_REQUEST_DIALOG_H_ -#define CHROME_BROWSER_UI_WEBAUTHN_AUTHENTICATOR_REQUEST_DIALOG_H_ - -#include "base/memory/scoped_refptr.h" - -struct AuthenticatorRequestDialogModel; - -namespace content { -class WebContents; -} - -// Creates and shows the dialog for a given WebContents. -// |model| must outlive the dialog. -void ShowAuthenticatorRequestDialog( - content::WebContents* web_contents, - scoped_refptr<AuthenticatorRequestDialogModel> model); - -#endif // CHROME_BROWSER_UI_WEBAUTHN_AUTHENTICATOR_REQUEST_DIALOG_H_
diff --git a/chrome/browser/ui/webauthn/authenticator_request_dialog_view_controller.h b/chrome/browser/ui/webauthn/authenticator_request_dialog_view_controller.h new file mode 100644 index 0000000..1bfbc9d --- /dev/null +++ b/chrome/browser/ui/webauthn/authenticator_request_dialog_view_controller.h
@@ -0,0 +1,24 @@ +// Copyright 2018 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_UI_WEBAUTHN_AUTHENTICATOR_REQUEST_DIALOG_VIEW_CONTROLLER_H_ +#define CHROME_BROWSER_UI_WEBAUTHN_AUTHENTICATOR_REQUEST_DIALOG_VIEW_CONTROLLER_H_ + +#include "base/memory/scoped_refptr.h" + +struct AuthenticatorRequestDialogModel; + +namespace content { +class WebContents; +} + +class AuthenticatorRequestDialogViewController { + public: + // Creates and shows the dialog for a given WebContents. + // |model| must outlive the dialog. + static void Show(content::WebContents* web_contents, + scoped_refptr<AuthenticatorRequestDialogModel> model); +}; + +#endif // CHROME_BROWSER_UI_WEBAUTHN_AUTHENTICATOR_REQUEST_DIALOG_VIEW_CONTROLLER_H_
diff --git a/chrome/browser/ui/webui/profile_internals/profile_internals_ui.cc b/chrome/browser/ui/webui/profile_internals/profile_internals_ui.cc index 58aeb32..c18749007 100644 --- a/chrome/browser/ui/webui/profile_internals/profile_internals_ui.cc +++ b/chrome/browser/ui/webui/profile_internals/profile_internals_ui.cc
@@ -8,7 +8,6 @@ #include "chrome/browser/ui/webui/profile_internals/profile_internals_handler.h" #include "chrome/common/url_constants.h" #include "chrome/common/webui_url_constants.h" -#include "chrome/grit/dev_ui_browser_resources.h" #include "chrome/grit/profile_internals_resources.h" #include "chrome/grit/profile_internals_resources_map.h" #include "content/public/browser/browser_context.h"
diff --git a/chrome/browser/ui/webui/settings/people_handler.cc b/chrome/browser/ui/webui/settings/people_handler.cc index eccab62..14086009 100644 --- a/chrome/browser/ui/webui/settings/people_handler.cc +++ b/chrome/browser/ui/webui/settings/people_handler.cc
@@ -84,6 +84,7 @@ #endif #if !BUILDFLAG(IS_CHROMEOS_ASH) +#include "chrome/browser/ui/sync/sync_passphrase_dialog.h" #include "chrome/browser/ui/webui/profile_helper.h" #endif @@ -355,6 +356,11 @@ "SyncSetupStartSignIn", base::BindRepeating(&PeopleHandler::HandleStartSignin, base::Unretained(this))); + web_ui()->RegisterMessageCallback( + "SyncShowSyncPassphraseDialog", + base::BindRepeating(&PeopleHandler::HandleShowSyncPassphraseDialog, + base::Unretained(this))); + #endif #if BUILDFLAG(ENABLE_DICE_SUPPORT) web_ui()->RegisterMessageCallback( @@ -922,6 +928,22 @@ browser, syncer::TrustedVaultUserActionTriggerForUMA::kSettings); } +#if !BUILDFLAG(IS_CHROMEOS) +void PeopleHandler::HandleShowSyncPassphraseDialog( + const base::Value::List& args) { + Browser* browser = chrome::FindBrowserWithTab(web_ui()->GetWebContents()); + if (!browser) { + return; + } + + ShowSyncPassphraseDialog( + *browser, + base::BindRepeating(&SyncPassphraseDialogDecryptData, + base::Unretained(SyncServiceFactory::GetForProfile( + browser->profile())))); +} +#endif + void PeopleHandler::HandleGetSyncStatus(const base::Value::List& args) { AllowJavascript(); @@ -1063,6 +1085,7 @@ void PeopleHandler::OnStateChanged(syncer::SyncService* sync_service) { UpdateSyncStatus(); + UpdateStoredAccounts(); // TODO(crbug.com/40140566): Re-evaluate marking sync as configuring here, // since this gets called whenever SyncService changes state. Inline // MaybeMarkSyncConfiguring() then.
diff --git a/chrome/browser/ui/webui/settings/people_handler.h b/chrome/browser/ui/webui/settings/people_handler.h index 330d9107..bed1622 100644 --- a/chrome/browser/ui/webui/settings/people_handler.h +++ b/chrome/browser/ui/webui/settings/people_handler.h
@@ -220,6 +220,8 @@ void HandleGetSyncStatus(const base::Value::List& args); #if !BUILDFLAG(IS_CHROMEOS_ASH) + void HandleShowSyncPassphraseDialog(const base::Value::List& args); + // Displays the GAIA login form. void DisplayGaiaLogin(signin_metrics::AccessPoint access_point);
diff --git a/chrome/browser/ui/webui/settings/people_handler_unittest.cc b/chrome/browser/ui/webui/settings/people_handler_unittest.cc index abcdb2d..90c55fc 100644 --- a/chrome/browser/ui/webui/settings/people_handler_unittest.cc +++ b/chrome/browser/ui/webui/settings/people_handler_unittest.cc
@@ -453,8 +453,9 @@ syncer::SyncService::TransportState::ACTIVE); sync_service_->FireStateChanged(); - // Updates for the sync status, sync prefs and trusted vault opt-in are sent. - EXPECT_EQ(3U, web_ui_.call_data().size()); + // Updates for the sync status, sync prefs, trusted vault opt-in and stored + // accounts are sent. + EXPECT_EQ(4U, web_ui_.call_data().size()); base::Value::Dict dictionary = ExpectSyncPrefsChanged(); ExpectHasBoolKey(dictionary, "syncAllDataTypes", true);
diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc index af43819..8e23ece 100644 --- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -1442,11 +1442,6 @@ ? IDS_AUTOFILL_ADDRESSES_SETTINGS_WITH_PLUS_ADDRESS_SUBLABEL : IDS_AUTOFILL_ADDRESSES_SETTINGS_SUBLABEL)); - html_source->AddBoolean( - "syncEnableContactInfoDataTypeInTransportMode", - base::FeatureList::IsEnabled( - syncer::kSyncEnableContactInfoDataTypeInTransportMode)); - plus_addresses::PlusAddressService* plus_address_service = PlusAddressServiceFactory::GetInstance()->GetForBrowserContext(profile); html_source->AddBoolean(
diff --git a/chrome/browser/ui/webui/side_panel/read_anything/DEPS b/chrome/browser/ui/webui/side_panel/read_anything/DEPS index 24980ce..5f0b2b3 100644 --- a/chrome/browser/ui/webui/side_panel/read_anything/DEPS +++ b/chrome/browser/ui/webui/side_panel/read_anything/DEPS
@@ -1,5 +1,6 @@ include_rules = [ "+chrome/common/read_anything", + "+components/language_detection/core", ] specific_include_rules = {
diff --git a/chrome/browser/ui/webui/side_panel/read_anything/read_anything_untrusted_page_handler.cc b/chrome/browser/ui/webui/side_panel/read_anything/read_anything_untrusted_page_handler.cc index 6b093ef..da5845e 100644 --- a/chrome/browser/ui/webui/side_panel/read_anything/read_anything_untrusted_page_handler.cc +++ b/chrome/browser/ui/webui/side_panel/read_anything/read_anything_untrusted_page_handler.cc
@@ -33,11 +33,11 @@ #include "components/language/core/browser/language_model.h" #include "components/language/core/browser/language_model_manager.h" #include "components/language/core/common/locale_util.h" +#include "components/language_detection/core/constants.h" #include "components/prefs/pref_service.h" #include "components/prefs/scoped_user_pref_update.h" #include "components/translate/core/browser/language_state.h" #include "components/translate/core/browser/translate_driver.h" -#include "components/translate/core/common/translate_constants.h" #include "content/public/browser/browser_accessibility_state.h" #include "content/public/browser/render_process_host.h" #include "content/public/browser/scoped_accessibility_mode.h" @@ -880,7 +880,8 @@ void ReadAnythingUntrustedPageHandler::SetLanguageCode( const std::string& code) { const std::string& language_code = - (code.empty() || code == translate::kUnknownLanguageCode) ? "" : code; + (code.empty() || code == language_detection::kUnknownLanguageCode) ? "" + : code; // Only send the language code if it's a new language. if (language_code != current_language_code_) { current_language_code_ = language_code;
diff --git a/chrome/browser/ui/webui/translate_internals/translate_internals_ui.cc b/chrome/browser/ui/webui/translate_internals/translate_internals_ui.cc index 2ffce26..830afe1 100644 --- a/chrome/browser/ui/webui/translate_internals/translate_internals_ui.cc +++ b/chrome/browser/ui/webui/translate_internals/translate_internals_ui.cc
@@ -15,13 +15,15 @@ #include "chrome/browser/ui/webui/translate_internals/chrome_translate_internals_handler.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/url_constants.h" -#include "chrome/grit/dev_ui_browser_resources.h" +#include "components/grit/translate_internals_resources.h" +#include "components/grit/translate_internals_resources_map.h" #include "components/translate/core/common/translate_util.h" #include "components/translate/translate_internals/translate_internals_handler.h" #include "content/public/browser/web_contents.h" #include "content/public/browser/web_ui.h" #include "content/public/browser/web_ui_data_source.h" #include "ui/base/l10n/l10n_util.h" +#include "ui/webui/webui_util.h" namespace { @@ -29,14 +31,8 @@ content::WebUIDataSource* source = content::WebUIDataSource::CreateAndAdd( profile, chrome::kChromeUITranslateInternalsHost); - source->SetDefaultResource(IDR_TRANSLATE_INTERNALS_HTML); - source->UseStringsJs(); - source->AddResourcePath("translate_internals.css", - IDR_TRANSLATE_INTERNALS_CSS); - source->AddResourcePath("translate_internals.js", IDR_TRANSLATE_INTERNALS_JS); - source->OverrideContentSecurityPolicy( - network::mojom::CSPDirectiveName::TrustedTypes, - "trusted-types static-types;"); + webui::SetupWebUIDataSource(source, kTranslateInternalsResources, + IDR_TRANSLATE_INTERNALS_TRANSLATE_INTERNALS_HTML); base::Value::Dict langs = translate::TranslateInternalsHandler::GetLanguages();
diff --git a/chrome/browser/ui/webui/user_education_internals/user_education_internals_ui.cc b/chrome/browser/ui/webui/user_education_internals/user_education_internals_ui.cc index 0a33a0e7..ad2721aa 100644 --- a/chrome/browser/ui/webui/user_education_internals/user_education_internals_ui.cc +++ b/chrome/browser/ui/webui/user_education_internals/user_education_internals_ui.cc
@@ -10,7 +10,6 @@ #include "chrome/browser/ui/browser_element_identifiers.h" #include "chrome/browser/ui/webui/user_education_internals/user_education_internals_page_handler_impl.h" #include "chrome/common/url_constants.h" -#include "chrome/grit/dev_ui_browser_resources.h" #include "chrome/grit/user_education_internals_resources.h" #include "chrome/grit/user_education_internals_resources_map.h" #include "content/public/browser/web_ui.h"
diff --git a/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_browsertest.cc b/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_browsertest.cc index fdb06c5..ba56355 100644 --- a/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_browsertest.cc +++ b/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_browsertest.cc
@@ -414,6 +414,36 @@ app_frame->GetWebExposedIsolationLevel()); } +IN_PROC_BROWSER_TEST_F(IsolatedWebAppBrowserTest, + OpeningNonexistentPathShowsError) { + std::unique_ptr<ScopedBundledIsolatedWebApp> app = + IsolatedWebAppBuilder(ManifestBuilder()).BuildBundle(); + ASSERT_OK_AND_ASSIGN(IsolatedWebAppUrlInfo url_info, + app->TrustBundleAndInstall(profile())); + + const GURL app_url = + url_info.origin().GetURL().Resolve("/does_not_exist.html"); + auto* app_frame = + NavigateToURLInNewTab(browser(), app_url, WindowOpenDisposition::UNKNOWN); + + // The browser shouldn't have opened the app's page. + EXPECT_EQ(GetPrimaryMainFrame(browser())->GetLastCommittedURL(), GURL()); + + Browser* app_browser = GetBrowserFromFrame(app_frame); + EXPECT_NE(app_browser, browser()); + EXPECT_TRUE( + AppBrowserController::IsForWebApp(app_browser, url_info.app_id())); + + // Because we accessed a nonexistent path, we should get a + // window with error message instead of the actual IWA + EXPECT_NE(content::WebExposedIsolationLevel::kIsolatedApplication, + app_frame->GetWebExposedIsolationLevel()); + EXPECT_TRUE(EvalJs(app_frame, + "document.body.textContent.includes(" + "'No webpage was found for the web address')") + .ExtractBool()); +} + // Tests that the app menu doesn't have an 'Open in Chrome' option. IN_PROC_BROWSER_TEST_F(IsolatedWebAppBrowserTest, NoOpenInChrome) { std::unique_ptr<ScopedBundledIsolatedWebApp> app =
diff --git a/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_manager_browsertest.cc b/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_manager_browsertest.cc index 79cac84..87e11f3 100644 --- a/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_manager_browsertest.cc +++ b/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_manager_browsertest.cc
@@ -136,42 +136,6 @@ } #endif // BUILDFLAG(IS_CHROMEOS) -class UpdateDiscoveryTaskResultWaiter - : public IsolatedWebAppUpdateManager::Observer { - using TaskResultCallback = base::OnceCallback<void( - IsolatedWebAppUpdateDiscoveryTask::CompletionStatus status)>; - - public: - UpdateDiscoveryTaskResultWaiter(WebAppProvider& provider, - const webapps::AppId expected_app_id, - TaskResultCallback callback) - : expected_app_id_(expected_app_id), - callback_(std::move(callback)), - provider_(provider) { - observation_.Observe(&provider.iwa_update_manager()); - } - - // IsolatedWebAppUpdateManager::Observer: - void OnUpdateDiscoveryTaskCompleted( - const webapps::AppId& app_id, - IsolatedWebAppUpdateDiscoveryTask::CompletionStatus status) override { - if (app_id != expected_app_id_) { - return; - } - std::move(callback_).Run(status); - observation_.Reset(); - } - - private: - const webapps::AppId expected_app_id_; - TaskResultCallback callback_; - const raw_ref<WebAppProvider> provider_; - - base::ScopedObservation<IsolatedWebAppUpdateManager, - IsolatedWebAppUpdateManager::Observer> - observation_{this}; -}; - class ServiceWorkerVersionStartedRunningWaiter : public content::ServiceWorkerContextObserver { public:
diff --git a/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_manager_unittest.cc b/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_manager_unittest.cc index 0204b74f..2b244e4 100644 --- a/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_manager_unittest.cc +++ b/chrome/browser/web_applications/isolated_web_apps/isolated_web_app_update_manager_unittest.cc
@@ -23,6 +23,7 @@ #include "base/strings/strcat.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" +#include "base/test/bind.h" #include "base/test/gmock_expected_support.h" #include "base/test/metrics/histogram_tester.h" #include "base/test/scoped_feature_list.h" @@ -45,9 +46,12 @@ #include "chrome/browser/web_applications/isolated_web_apps/iwa_identity_validator.h" #include "chrome/browser/web_applications/isolated_web_apps/policy/isolated_web_app_policy_constants.h" #include "chrome/browser/web_applications/isolated_web_apps/test/isolated_web_app_builder.h" +#include "chrome/browser/web_applications/isolated_web_apps/test/isolated_web_app_test.h" +#include "chrome/browser/web_applications/isolated_web_apps/test/iwa_test_server_configurator.h" #include "chrome/browser/web_applications/isolated_web_apps/test/policy_generator.h" #include "chrome/browser/web_applications/isolated_web_apps/test/policy_test_utils.h" #include "chrome/browser/web_applications/isolated_web_apps/test/test_signed_web_bundle_builder.h" +#include "chrome/browser/web_applications/isolated_web_apps/update_manifest/update_manifest.h" #include "chrome/browser/web_applications/test/fake_web_app_database_factory.h" #include "chrome/browser/web_applications/test/fake_web_app_provider.h" #include "chrome/browser/web_applications/test/fake_web_app_ui_manager.h" @@ -109,13 +113,10 @@ using ::testing::VariantWith; using ::testing::WithArg; -struct IwaForceInstallPolicyEntry { - IsolatedWebAppUrlInfo url_info; - GURL update_manifest_url; - std::optional<UpdateChannel> update_channel; - std::optional<base::Version> pinned_version; - bool allow_downgrades = false; -}; +const UpdateChannel kBetaChannel = UpdateChannel::Create("beta").value(); + +using UpdateDiscoveryTaskFuture = + base::test::TestFuture<IsolatedWebAppUpdateDiscoveryTask::CompletionStatus>; blink::mojom::ManifestPtr CreateDefaultManifest(const GURL& application_url, std::u16string_view short_name, @@ -186,128 +187,157 @@ }; #endif // BUILDFLAG(ENABLE_NACL) -// TODO(b/304691179): Rely less on `RunUntilIdle` and more on concrete events in -// all of these tests. -class IsolatedWebAppUpdateManagerTest : public WebAppTest { +class IsolatedWebAppUpdateManagerTest : public IsolatedWebAppTest { public: explicit IsolatedWebAppUpdateManagerTest( - const base::flat_map<base::test::FeatureRef, bool>& feature_states = - { - {features::kIsolatedWebApps, true}, - }, base::test::TaskEnvironment::TimeSource time_source = base::test::TaskEnvironment::TimeSource::DEFAULT) - : WebAppTest(WebAppTest::WithTestUrlLoaderFactory(), time_source) { - scoped_feature_list_.InitWithFeatureStates(feature_states); - } - - void SetUp() override { - WebAppTest::SetUp(); -#if BUILDFLAG(ENABLE_NACL) - // Clearing Cache will clear PNACL cache, which needs this delegate set. - nacl_browser_delegate_.Init(profile_manager().profile_manager()); -#endif // BUILDFLAG(ENABLE_NACL) - IwaIdentityValidator::CreateSingleton(); - } - - void TearDown() override { - if (task_environment()->UsesMockTime()) { - // TODO(b/299074540): Without this line, subsequent tests are unable to - // use `test::UninstallWebApp`, which will hang forever. This has - // something to do with the combination of `MOCK_TIME` and NaCl, because - // the code ends up hanging forever in - // `PnaclTranslationCache::DoomEntriesBetween`. A simple `FastForwardBy` - // here seems to alleviate this issue. - task_environment()->FastForwardBy(TestTimeouts::tiny_timeout()); - } - - WebAppTest::TearDown(); - } + : IsolatedWebAppTest(time_source) {} protected: IsolatedWebAppUpdateManager& update_manager() { - return fake_provider().iwa_update_manager(); - } - - FakeWebContentsManager& fake_web_contents_manager() { - return static_cast<FakeWebContentsManager&>( - fake_provider().web_contents_manager()); + return provider().iwa_update_manager(); } FakeWebAppUiManager& fake_ui_manager() { - return static_cast<FakeWebAppUiManager&>(fake_provider().ui_manager()); + return static_cast<FakeWebAppUiManager&>(provider().ui_manager()); } - base::test::ScopedFeatureList scoped_feature_list_; + void InitialIwaBundleForceInstall( + std::unique_ptr<ScopedBundledIsolatedWebApp> app) { + auto bundle_id = app->web_bundle_id(); + auto version = app->version(); + + test_update_server().AddBundle(std::move(app)); + + test::AddForceInstalledIwaToPolicy( + profile()->GetPrefs(), + test_update_server().CreateForceInstallPolicyEntry(bundle_id)); + + web_app::WebAppTestInstallObserver(profile()).BeginListeningAndWait( + {GetAppId(bundle_id)}); + + AssertAppInstalledAtVersion(bundle_id, version); + } + + std::unique_ptr<ScopedBundledIsolatedWebApp> CreateIwa1Bundle( + std::string_view version) { + std::unique_ptr<ScopedBundledIsolatedWebApp> app = + IsolatedWebAppBuilder(ManifestBuilder().SetVersion(version)) + .BuildBundle(GetIwa1WebBundleId(), + {test::GetDefaultEd25519KeyPair()}); + app->TrustSigningKey(); + app->FakeInstallPageState(profile()); + return app; + } + + std::unique_ptr<ScopedBundledIsolatedWebApp> CreateIwa2Bundle( + std::string_view version) { + std::unique_ptr<ScopedBundledIsolatedWebApp> app = + IsolatedWebAppBuilder(ManifestBuilder().SetVersion(version)) + .BuildBundle(GetIwa2WebBundleId(), + {test::GetDefaultEcdsaP256KeyPair()}); + app->TrustSigningKey(); + app->FakeInstallPageState(profile()); + return app; + } + + webapps::AppId GetAppId(web_package::SignedWebBundleId web_bundle_id) const { + return IsolatedWebAppUrlInfo::CreateFromSignedWebBundleId(web_bundle_id) + .app_id(); + } + + web_package::SignedWebBundleId GetIwa1WebBundleId() const { + return test::GetDefaultEd25519WebBundleId(); + } + + web_package::SignedWebBundleId GetIwa2WebBundleId() const { + return test::GetDefaultEcdsaP256WebBundleId(); + } + + void AssertAppDiscoveryTaskSuccessful( + const web_package::SignedWebBundleId& web_bundle_id) { + UpdateDiscoveryTaskFuture future; + UpdateDiscoveryTaskResultWaiter waiter(provider(), GetAppId(web_bundle_id), + future.GetCallback()); + EXPECT_THAT(future.Take(), + ValueIs(IsolatedWebAppUpdateDiscoveryTask::Success:: + kUpdateFoundAndSavedInDatabase)); + } + + void AssertInstallationFinish( + const web_package::SignedWebBundleId& web_bundle_id) { + WebAppTestManifestUpdatedObserver manifest_updated_observer( + &provider().install_manager()); + manifest_updated_observer.BeginListeningAndWait({GetAppId(web_bundle_id)}); + } + + void AssertAppInstalledAtVersion( + const web_package::SignedWebBundleId& web_bundle_id, + base::Version version) { + ASSERT_EQ(provider() + .registrar_unsafe() + .GetAppById(GetAppId(web_bundle_id)) + ->isolation_data() + ->version(), + version); + } + data_decoder::test::InProcessDataDecoder data_decoder_; -#if BUILDFLAG(ENABLE_NACL) - ScopedNaClBrowserDelegate nacl_browser_delegate_; -#endif // BUILDFLAG(ENABLE_NACL) }; -class IsolatedWebAppUpdateManagerDevModeUpdateTest - : public IsolatedWebAppUpdateManagerTest { +class IsolatedWebAppUpdateManagerDevModeUpdateTest : public IsolatedWebAppTest { public: IsolatedWebAppUpdateManagerDevModeUpdateTest() - : IsolatedWebAppUpdateManagerTest( - {{features::kIsolatedWebApps, true}, - {features::kIsolatedWebAppDevMode, true}}) {} + : IsolatedWebAppTest(WithDevMode()) {} void SetUp() override { - IsolatedWebAppUpdateManagerTest::SetUp(); + IsolatedWebAppTest::SetUp(); - fake_provider().SetEnableAutomaticIwaUpdates( + provider().SetEnableAutomaticIwaUpdates( FakeWebAppProvider::AutomaticIwaUpdateStrategy::kForceEnabled); test::AwaitStartWebAppProviderAndSubsystems(profile()); } - void CreateInstallPageState(const IsolatedWebAppUrlInfo& url_info) { - GURL install_url = url_info.origin().GetURL().Resolve( - "/.well-known/_generated_install_page.html"); - auto& page_state = - fake_web_contents_manager().GetOrCreatePageState(install_url); - page_state.url_load_result = webapps::WebAppUrlLoaderResult::kUrlLoaded; - page_state.error_code = webapps::InstallableStatusCode::NO_ERROR_DETECTED; - page_state.manifest_url = - url_info.origin().GetURL().Resolve("manifest.webmanifest"); - page_state.valid_manifest_for_web_app = true; - page_state.manifest_before_default_processing = CreateDefaultManifest( - url_info.origin().GetURL(), u"updated iwa", base::Version("2.0.0")); - } - protected: base::ScopedTempDir temp_dir_; }; TEST_F(IsolatedWebAppUpdateManagerDevModeUpdateTest, DiscoversLocalDevModeUpdate) { + web_package::SignedWebBundleId bundle_id = + test::GetDefaultEd25519WebBundleId(); + auto update_bundle = IsolatedWebAppBuilder( ManifestBuilder().SetVersion("2.0.0").SetName("updated iwa")) - .BuildBundle(); + .BuildBundle(bundle_id, {test::GetDefaultEd25519KeyPair()}); - IsolatedWebAppUrlInfo url_info = - IsolatedWebAppUrlInfo::CreateFromSignedWebBundleId( - update_bundle->web_bundle_id()); + auto initial_bundle = + IsolatedWebAppBuilder( + ManifestBuilder().SetVersion("1.0.0").SetName("intiial iwa")) + .BuildBundle(bundle_id, {test::GetDefaultEd25519KeyPair()}); + auto& page_state = initial_bundle->FakeInstallPageState(profile()); - AddDummyIsolatedAppToRegistry( - profile(), url_info.origin().GetURL(), "installed iwa 1 (unowned bundle)", - IsolationData::Builder(IwaStorageUnownedBundle{base::FilePath()}, - base::Version("1.0.0")) - .Build()); + ASSERT_OK_AND_ASSIGN(IsolatedWebAppUrlInfo url_info, + initial_bundle->InstallWithSource( + profile(), IsolatedWebAppInstallSource::FromDevUi( + IwaSourceBundleDevModeWithFileOp( + initial_bundle->path(), + kDefaultBundleDevFileOp)))); - CreateInstallPageState(url_info); + page_state.manifest_before_default_processing = CreateDefaultManifest( + url_info.origin().GetURL(), u"updated iwa", base::Version("2.0.0")); + initial_bundle->TrustSigningKey(); base::test::TestFuture<base::expected<base::Version, std::string>> future; - fake_provider() - .iwa_update_manager() - .DiscoverApplyAndPrioritizeLocalDevModeUpdate( - IwaSourceBundleDevModeWithFileOp(update_bundle->path(), - kDefaultBundleDevFileOp), - url_info, future.GetCallback()); + provider().iwa_update_manager().DiscoverApplyAndPrioritizeLocalDevModeUpdate( + IwaSourceBundleDevModeWithFileOp(update_bundle->path(), + kDefaultBundleDevFileOp), + url_info, future.GetCallback()); EXPECT_THAT(future.Get(), ValueIs(Eq(base::Version("2.0.0")))); - EXPECT_THAT(fake_provider().registrar_unsafe().GetAppById(url_info.app_id()), + EXPECT_THAT(provider().registrar_unsafe().GetAppById(url_info.app_id()), test::IwaIs(Eq("updated iwa"), test::IsolationDataIs( Property("variant", @@ -317,12 +347,6 @@ /*controlled_frame_partitions=*/_, /*pending_update_info=*/Eq(std::nullopt), /*integrity_block_data=*/_))); - - // TODO(crbug.com/40277668): As a temporary fix to avoid race conditions with - // `ScopedProfileKeepAlive`s, manually shutdown `KeyedService`s holding them. - fake_provider().Shutdown(); - ChromeBrowsingDataRemoverDelegateFactory::GetForProfile(profile()) - ->Shutdown(); } class IsolatedWebAppUpdateManagerUpdateTest @@ -331,174 +355,30 @@ explicit IsolatedWebAppUpdateManagerUpdateTest( base::test::TaskEnvironment::TimeSource time_source = base::test::TaskEnvironment::TimeSource::DEFAULT) - : IsolatedWebAppUpdateManagerTest( - {{features::kIsolatedWebApps, true}, - {features::kIsolatedWebAppAutomaticUpdates, true}}, - time_source) {} + : IsolatedWebAppUpdateManagerTest(time_source) {} protected: - struct IwaInfo { - IwaInfo(web_package::test::Ed25519KeyPair key_pair, - IsolatedWebAppStorageLocation installed_location, - base::Version installed_version, - GURL update_manifest_url, - GURL update_bundle_url, - base::Version update_version, - std::string update_app_name, - std::optional<std::vector<UpdateChannel>> update_channels = - std::nullopt) - : url_info(IsolatedWebAppUrlInfo::CreateFromSignedWebBundleId( - web_package::SignedWebBundleId::CreateForPublicKey( - key_pair.public_key))), - key_pair(std::move(key_pair)), - installed_location(std::move(installed_location)), - installed_version(std::move(installed_version)), - update_manifest_url(std::move(update_manifest_url)), - update_bundle_url(std::move(update_bundle_url)), - update_version(std::move(update_version)), - update_app_name(std::move(update_app_name)), - update_channels(std::move(update_channels)) {} - - IsolatedWebAppUrlInfo url_info; - web_package::test::Ed25519KeyPair key_pair; - IsolatedWebAppStorageLocation installed_location; - base::Version installed_version; - - GURL update_manifest_url; - GURL update_bundle_url; - base::Version update_version; - std::string update_app_name; - std::optional<std::vector<UpdateChannel>> update_channels; - }; - void SetUp() override { IsolatedWebAppUpdateManagerTest::SetUp(); - fake_provider().SetEnableAutomaticIwaUpdates( + provider().SetEnableAutomaticIwaUpdates( FakeWebAppProvider::AutomaticIwaUpdateStrategy::kForceEnabled); - auto command_scheduler = - std::make_unique<NiceMock<MockCommandScheduler>>(*profile()); + auto command_scheduler = std::make_unique<MockCommandScheduler>(*profile()); command_scheduler->DelegateToRealImpl(); - fake_provider().SetScheduler(std::move(command_scheduler)); - - iwa_info1_ = IwaInfo(web_package::test::Ed25519KeyPair::CreateRandom(), - IwaStorageOwnedBundle{"iwa1", /*dev_mode=*/false}, - base::Version("1.0.0"), - GURL("https://example.com/update_manifest1.json"), - GURL("https://example.com/bundle1.swbn"), - base::Version("2.0.0"), "updated app 1"); - SetUpIwaInfo(*iwa_info1_); - - iwa_info2_ = IwaInfo(web_package::test::Ed25519KeyPair::CreateRandom(), - IwaStorageOwnedBundle{"iwa2", /*dev_mode=*/false}, - base::Version("4.0.0"), - GURL("https://example.com/update_manifest2.json"), - GURL("https://example.com/bundle2.swbn"), - base::Version("7.0.0"), "updated app 2"); - SetUpIwaInfo(*iwa_info2_); - - auto iwa3_update_channels = {UpdateChannel::Create("beta").value(), - UpdateChannel::Create("🍪").value()}; - iwa_info3_ = - IwaInfo(web_package::test::Ed25519KeyPair::CreateRandom(), - IwaStorageOwnedBundle{"iwa3", /*dev_mode=*/false}, - base::Version("4.0.0"), - GURL("https://example.com/update_manifest3.json"), - GURL("https://example.com/bundle3.swbn"), - base::Version("8.0.0"), "updated app 3", iwa3_update_channels); - SetUpIwaInfo(*iwa_info3_); - - SetTrustedWebBundleIdsForTesting({iwa_info1_->url_info.web_bundle_id(), - iwa_info2_->url_info.web_bundle_id(), - iwa_info3_->url_info.web_bundle_id()}); + provider().SetScheduler(std::move(command_scheduler)); SeedWebAppDatabase(); test::AwaitStartWebAppProviderAndSubsystems(profile()); } - void SetUpIwaInfo(const IwaInfo& iwa_info) { - TestSignedWebBundle update_bundle = - CreateBundle(iwa_info.update_version, iwa_info.key_pair); - - auto version_entry = - base::Value::Dict() - .Set("src", iwa_info.update_bundle_url.spec()) - .Set("version", iwa_info.update_version.GetString()); - - if (iwa_info.update_channels.has_value()) { - version_entry.Set("channels", - base::ToValueList(iwa_info.update_channels.value(), - &UpdateChannel::ToString)); - } - - profile_url_loader_factory().AddResponse( - iwa_info.update_manifest_url.spec(), - *base::WriteJson(base::Value::Dict().Set( - "versions", base::Value::List().Append(std::move(version_entry))))); - - profile_url_loader_factory().AddResponse( - iwa_info.update_bundle_url.spec(), - std::string(update_bundle.data.begin(), update_bundle.data.end())); - - GURL install_url = iwa_info.url_info.origin().GetURL().Resolve( - "/.well-known/_generated_install_page.html"); - - auto& page_state = - fake_web_contents_manager().GetOrCreatePageState(install_url); - page_state.url_load_result = webapps::WebAppUrlLoaderResult::kUrlLoaded; - page_state.error_code = webapps::InstallableStatusCode::NO_ERROR_DETECTED; - page_state.manifest_url = - iwa_info.url_info.origin().GetURL().Resolve("manifest.webmanifest"); - page_state.valid_manifest_for_web_app = true; - page_state.manifest_before_default_processing = CreateDefaultManifest( - iwa_info.url_info.origin().GetURL(), - base::UTF8ToUTF16(iwa_info.update_app_name), iwa_info.update_version); - } - - TestSignedWebBundle CreateBundle( - const base::Version& version, - const web_package::test::Ed25519KeyPair& key_pair) const { - return TestSignedWebBundleBuilder::BuildDefault( - TestSignedWebBundleBuilder::BuildOptions() - .SetVersion(version) - .AddKeyPair(key_pair)); - } - virtual void SeedWebAppDatabase() {} - void SetIwaForceInstallPolicy( - std::vector<IwaForceInstallPolicyEntry> entries) { - PolicyGenerator policy_generator; - for (auto& entry : entries) { - policy_generator.AddForceInstalledIwa( - entry.url_info.web_bundle_id(), entry.update_manifest_url, - entry.update_channel, entry.pinned_version, entry.allow_downgrades); - } - - profile()->GetPrefs()->Set(prefs::kIsolatedWebAppInstallForceList, - policy_generator.Generate()); - } - - // TODO(crbug.com/298005569): This should eventually go away and instead rely - // on the `IsolatedWebAppPolicyManager` to perform the uninstall by setting - // `SetIwaForceInstallPolicy` appropriately. - [[nodiscard]] webapps::UninstallResultCode UninstallPolicyInstalledIwa( - const webapps::AppId& app_id) { - base::test::TestFuture<webapps::UninstallResultCode> future; - fake_provider().scheduler().RemoveInstallManagementMaybeUninstall( - app_id, WebAppManagement::Type::kIwaPolicy, - webapps::WebappUninstallSource::kIwaEnterprisePolicy, - future.GetCallback()); - return future.Take(); - } - - NiceMock<MockCommandScheduler>& mock_command_scheduler() { - return static_cast<NiceMock<MockCommandScheduler>&>( - fake_provider().scheduler()); + MockCommandScheduler& mock_command_scheduler() { + return static_cast<MockCommandScheduler&>(provider().scheduler()); } base::Value debug_log() { - return fake_provider().iwa_update_manager().AsDebugValue(); + return provider().iwa_update_manager().AsDebugValue(); } base::Value::List UpdateDiscoveryLog() { @@ -536,16 +416,6 @@ base::Value::List UpdateApplyWaiters() { return debug_log().GetDict().FindList("update_apply_waiters")->Clone(); } - - auto UpdateLocationMatcher(Profile* profile) { - return Property("variant", &IsolatedWebAppStorageLocation::variant, - VariantWith<IwaStorageOwnedBundle>( - test::OwnedIwaBundleExists(profile->GetPath()))); - } - - std::optional<IwaInfo> iwa_info1_; - std::optional<IwaInfo> iwa_info2_; - std::optional<IwaInfo> iwa_info3_; }; class IsolatedWebAppUpdateManagerUpdateMockTimeTest @@ -557,115 +427,31 @@ }; TEST_F(IsolatedWebAppUpdateManagerUpdateMockTimeTest, - DiscoversAndPreparesUpdateOfPolicyInstalledApps) { - IsolatedWebAppUrlInfo non_installed_url_info = - IsolatedWebAppUrlInfo::CreateFromSignedWebBundleId( - *web_package::SignedWebBundleId::Create( - "5tkrnsmftl4ggvvdkfth3piainqragus2qbhf7rlz2a3wo3rh4wqaaic")); - IsolatedWebAppUrlInfo dev_bundle_url_info = - IsolatedWebAppUrlInfo::CreateFromSignedWebBundleId( - *web_package::SignedWebBundleId::Create( - "aerugqztij5biqquuk3mfwpsaibuegaqcitgfchwuosuofdjabzqaaic")); - IsolatedWebAppUrlInfo dev_proxy_url_info = - IsolatedWebAppUrlInfo::CreateFromSignedWebBundleId( - web_package::SignedWebBundleId::CreateRandomForProxyMode()); - - test::InstallDummyWebApp(profile(), "non-iwa", GURL("https://a")); - AddDummyIsolatedAppToRegistry( - profile(), iwa_info1_->url_info.origin().GetURL(), "installed iwa 1", - IsolationData::Builder(iwa_info1_->installed_location, - iwa_info1_->installed_version) - .Build(), - webapps::WebappInstallSource::IWA_EXTERNAL_POLICY); - AddDummyIsolatedAppToRegistry( - profile(), dev_proxy_url_info.origin().GetURL(), - "installed iwa 2 (dev mode proxy)", - IsolationData::Builder(IwaStorageProxy{dev_proxy_url_info.origin()}, - base::Version("1.0.0")) - .Build(), - webapps::WebappInstallSource::IWA_EXTERNAL_POLICY); - AddDummyIsolatedAppToRegistry( - profile(), dev_bundle_url_info.origin().GetURL(), - "installed iwa 3 (unowned bundle)", - IsolationData::Builder(IwaStorageUnownedBundle{base::FilePath()}, - base::Version("1.0.0")) - .Build(), - webapps::WebappInstallSource::IWA_EXTERNAL_POLICY); - AddDummyIsolatedAppToRegistry( - profile(), GURL("isolated-app://b"), "installed iwa 4", - IsolationData::Builder( - IwaStorageOwnedBundle{/*dir_name_ascii=*/"", /*dev_mode=*/false}, - base::Version("1.0.0")) - .Build(), - webapps::WebappInstallSource::IWA_EXTERNAL_POLICY); - - fake_ui_manager().SetNumWindowsForApp(iwa_info1_->url_info.app_id(), 1); - - SetIwaForceInstallPolicy( - {{iwa_info1_->url_info, iwa_info1_->update_manifest_url}, - {non_installed_url_info, - GURL("https://example.com/update_manifest.json")}, - {dev_bundle_url_info, GURL("https://example.com/update_manifest.json")}, - {dev_proxy_url_info, GURL("https://example.com/update_manifest.json")}}); - - task_environment()->FastForwardBy( - *update_manager().GetNextUpdateDiscoveryTimeForTesting() - - base::TimeTicks::Now()); - task_environment()->RunUntilIdle(); - - EXPECT_THAT( - fake_provider().registrar_unsafe().GetAppById( - iwa_info1_->url_info.app_id()), - test::IwaIs(Eq("installed iwa 1"), - test::IsolationDataIs(Eq(iwa_info1_->installed_location), - Eq(iwa_info1_->installed_version), - /*controlled_frame_partitions=*/_, - test::PendingUpdateInfoIs( - UpdateLocationMatcher(profile()), - Eq(base::Version("2.0.0")), - /*integrity_block_data=*/_), - /*integrity_block_data=*/_))); - - EXPECT_THAT( - UpdateDiscoveryLog(), - UnorderedElementsAre(IsDict(DictionaryHasValue( - "result", base::Value("Success::kUpdateFoundAndDryRunSuccessful"))))); - EXPECT_THAT(UpdateApplyLog(), IsEmpty()); - - // TODO(crbug.com/40277668): As a temporary fix to avoid race conditions with - // `ScopedProfileKeepAlive`s, manually shutdown `KeyedService`s holding them. - fake_provider().Shutdown(); - ChromeBrowsingDataRemoverDelegateFactory::GetForProfile(profile()) - ->Shutdown(); -} - -TEST_F(IsolatedWebAppUpdateManagerUpdateMockTimeTest, DiscoversAndPreparesUpdateOfPolicyInstalledAppsOnBetaChannel) { - AddDummyIsolatedAppToRegistry( - profile(), iwa_info3_->url_info.origin().GetURL(), "installed iwa 3", - IsolationData::Builder(iwa_info3_->installed_location, - iwa_info3_->installed_version) - .Build(), - webapps::WebappInstallSource::IWA_EXTERNAL_POLICY); + // Initial Beta channel bundle installation. + { + test_update_server().AddBundle(CreateIwa1Bundle("1.0.0"), + std::vector<UpdateChannel>{kBetaChannel}); - SetIwaForceInstallPolicy( - {{iwa_info3_->url_info, iwa_info3_->update_manifest_url, - UpdateChannel::Create("beta").value()}}); + test::AddForceInstalledIwaToPolicy( + profile()->GetPrefs(), + test_update_server().CreateForceInstallPolicyEntry( + GetIwa1WebBundleId(), /*update_channel=*/kBetaChannel)); - task_environment()->FastForwardBy( + web_app::WebAppTestInstallObserver(profile()).BeginListeningAndWait( + {GetAppId(GetIwa1WebBundleId())}); + + AssertAppInstalledAtVersion(GetIwa1WebBundleId(), base::Version("1.0.0")); + } + + test_update_server().AddBundle(CreateIwa1Bundle("2.0.0"), + std::vector<UpdateChannel>{kBetaChannel}); + + task_environment().FastForwardBy( *update_manager().GetNextUpdateDiscoveryTimeForTesting() - base::TimeTicks::Now()); - task_environment()->RunUntilIdle(); - EXPECT_THAT(fake_provider().registrar_unsafe().GetAppById( - iwa_info3_->url_info.app_id()), - test::IwaIs(iwa_info3_->update_app_name, - test::IsolationDataIs( - UpdateLocationMatcher(profile()), - Eq(iwa_info3_->update_version), - /*controlled_frame_partitions=*/_, - /*pending_update_info=*/Eq(std::nullopt), - /*integrity_block_data=*/_))); + AssertAppInstalledAtVersion(GetIwa1WebBundleId(), base::Version("2.0.0")); EXPECT_THAT( UpdateDiscoveryLog(), @@ -673,82 +459,55 @@ "result", base::Value("Success::kUpdateFoundAndDryRunSuccessful"))))); EXPECT_THAT(UpdateApplyLog(), UnorderedElementsAre(IsDict(DictionaryHasValue( "result", base::Value("Success"))))); - - // TODO(crbug.com/40277668): As a temporary fix to avoid race conditions with - // `ScopedProfileKeepAlive`s, manually shutdown `KeyedService`s holding them. - fake_provider().Shutdown(); - ChromeBrowsingDataRemoverDelegateFactory::GetForProfile(profile()) - ->Shutdown(); } TEST_F(IsolatedWebAppUpdateManagerUpdateMockTimeTest, DoesNotDiscoverUpdateOfPolicyInstalledAppsOnDefaultChannel) { - AddDummyIsolatedAppToRegistry( - profile(), iwa_info3_->url_info.origin().GetURL(), "installed iwa 3", - IsolationData::Builder(iwa_info3_->installed_location, - iwa_info3_->installed_version) - .Build(), - webapps::WebappInstallSource::IWA_EXTERNAL_POLICY); - SetIwaForceInstallPolicy( - {{iwa_info3_->url_info, iwa_info3_->update_manifest_url}}); + InitialIwaBundleForceInstall(CreateIwa1Bundle("1.0.0")); - task_environment()->FastForwardBy( + test_update_server().AddBundle(CreateIwa1Bundle("4.0.0"), + std::vector<UpdateChannel>{kBetaChannel}); + + UpdateDiscoveryTaskFuture update_future; + UpdateDiscoveryTaskResultWaiter update_waiter( + provider(), GetAppId(GetIwa1WebBundleId()), update_future.GetCallback()); + + task_environment().FastForwardBy( *update_manager().GetNextUpdateDiscoveryTimeForTesting() - base::TimeTicks::Now()); - task_environment()->RunUntilIdle(); - EXPECT_THAT(fake_provider().registrar_unsafe().GetAppById( - iwa_info3_->url_info.app_id()), - test::IwaIs(Eq("installed iwa 3"), - test::IsolationDataIs( - Eq(iwa_info3_->installed_location), - Eq(iwa_info3_->installed_version), - /*controlled_frame_partitions=*/_, - /*pending_update_info=*/Eq(std::nullopt), - /*integrity_block_data=*/_))); + EXPECT_THAT( + update_future.Take(), + ValueIs(IsolatedWebAppUpdateDiscoveryTask::Success::kNoUpdateFound)); + + AssertAppInstalledAtVersion(GetIwa1WebBundleId(), base::Version("1.0.0")); EXPECT_THAT(UpdateDiscoveryLog(), UnorderedElementsAre(IsDict(DictionaryHasValue( - "result", - base::Value("Error::kUpdateManifestNoApplicableVersion"))))); + "result", base::Value("Success::kNoUpdateFound"))))); EXPECT_THAT(UpdateApplyLog(), IsEmpty()); - - // TODO(crbug.com/40277668): As a temporary fix to avoid race conditions with - // `ScopedProfileKeepAlive`s, manually shutdown `KeyedService`s holding them. - fake_provider().Shutdown(); - ChromeBrowsingDataRemoverDelegateFactory::GetForProfile(profile()) - ->Shutdown(); } TEST_F(IsolatedWebAppUpdateManagerUpdateMockTimeTest, DiscoversAndPreparesUpdateOfPolicyInstalledAppsToPinnedVersion) { - AddDummyIsolatedAppToRegistry( - profile(), iwa_info1_->url_info.origin().GetURL(), "installed iwa 1", - IsolationData::Builder(iwa_info1_->installed_location, - iwa_info1_->installed_version) - .Build(), - webapps::WebappInstallSource::IWA_EXTERNAL_POLICY); + InitialIwaBundleForceInstall(CreateIwa1Bundle("1.0.0")); - SetIwaForceInstallPolicy( - {{/*url_info=*/iwa_info1_->url_info, - /*update_manifest_url=*/iwa_info1_->update_manifest_url, - /*update_channel=*/std::nullopt, - /*pinned_version=*/iwa_info1_->update_version}}); + // Pins the IWA to v2.0.0. + test::EditForceInstalledIwaPolicy( + profile()->GetPrefs(), GetIwa1WebBundleId(), + test_update_server().CreateForceInstallPolicyEntry( + GetIwa1WebBundleId(), + /*update_channel=*/std::nullopt, + /*pinned_version=*/base::Version("2.0.0"))); - task_environment()->FastForwardBy( + test_update_server().AddBundle(CreateIwa1Bundle("2.0.0")); + + task_environment().FastForwardBy( *update_manager().GetNextUpdateDiscoveryTimeForTesting() - base::TimeTicks::Now()); - task_environment()->RunUntilIdle(); - EXPECT_THAT(fake_provider().registrar_unsafe().GetAppById( - iwa_info1_->url_info.app_id()), - test::IwaIs(iwa_info1_->update_app_name, - test::IsolationDataIs( - UpdateLocationMatcher(profile()), - Eq(iwa_info1_->update_version), - /*controlled_frame_partitions=*/_, - /*pending_update_info=*/Eq(std::nullopt), - /*integrity_block_data=*/_))); + AssertAppInstalledAtVersion(GetIwa1WebBundleId(), base::Version("2.0.0")); + EXPECT_THAT( UpdateDiscoveryLog(), UnorderedElementsAre(IsDict(DictionaryHasValue( @@ -756,102 +515,79 @@ EXPECT_THAT(UpdateApplyLog(), UnorderedElementsAre(IsDict(DictionaryHasValue( "result", base::Value("Success"))))); - fake_provider().Shutdown(); - ChromeBrowsingDataRemoverDelegateFactory::GetForProfile(profile()) - ->Shutdown(); + test_update_server().AddBundle(CreateIwa1Bundle("3.0.0")); + + task_environment().FastForwardBy( + *update_manager().GetNextUpdateDiscoveryTimeForTesting() - + base::TimeTicks::Now()); + + AssertAppInstalledAtVersion(GetIwa1WebBundleId(), base::Version("2.0.0")); + + EXPECT_THAT(UpdateDiscoveryLog(), IsEmpty()); } TEST_F(IsolatedWebAppUpdateManagerUpdateMockTimeTest, DoesNotDiscoverUpdateOfPolicyInstalledAppsWithPinnedCurrentVersion) { - AddDummyIsolatedAppToRegistry( - profile(), iwa_info1_->url_info.origin().GetURL(), "installed iwa 1", - IsolationData::Builder(iwa_info1_->installed_location, - iwa_info1_->installed_version) - .Build(), - webapps::WebappInstallSource::IWA_EXTERNAL_POLICY); + // Initial pinned IWA force installation. + { + test_update_server().AddBundle(CreateIwa1Bundle("2.0.0")); - SetIwaForceInstallPolicy( - {{/*url_info=*/iwa_info1_->url_info, - /*update_manifest_url=*/iwa_info1_->update_manifest_url, - /*update_channel=*/std::nullopt, - /*pinned_version=*/iwa_info1_->installed_version}}); + test::AddForceInstalledIwaToPolicy( + profile()->GetPrefs(), + test_update_server().CreateForceInstallPolicyEntry( + GetIwa1WebBundleId(), + /*update_channel=*/std::nullopt, + /*pinned_version=*/base::Version("2.0.0"))); - task_environment()->FastForwardBy( + web_app::WebAppTestInstallObserver(profile()).BeginListeningAndWait( + {GetAppId(GetIwa1WebBundleId())}); + + AssertAppInstalledAtVersion(GetIwa1WebBundleId(), base::Version("2.0.0")); + } + test_update_server().AddBundle(CreateIwa1Bundle("3.0.0")); + + task_environment().FastForwardBy( *update_manager().GetNextUpdateDiscoveryTimeForTesting() - base::TimeTicks::Now()); - task_environment()->RunUntilIdle(); - EXPECT_THAT(fake_provider().registrar_unsafe().GetAppById( - iwa_info1_->url_info.app_id()), - test::IwaIs(Eq("installed iwa 1"), - test::IsolationDataIs( - Eq(iwa_info1_->installed_location), - Eq(iwa_info1_->installed_version), - /*controlled_frame_partitions=*/_, - /*pending_update_info=*/Eq(std::nullopt), - /*integrity_block_data=*/_))); - - EXPECT_THAT(UpdateApplyLog(), IsEmpty()); - - fake_provider().Shutdown(); - ChromeBrowsingDataRemoverDelegateFactory::GetForProfile(profile()) - ->Shutdown(); + // As log as the IWA is pinned to v2.0.0 no updates should be discovered. + EXPECT_THAT(UpdateDiscoveryLog(), IsEmpty()); } -TEST_F( - IsolatedWebAppUpdateManagerUpdateMockTimeTest, - DoesNotDiscoverUpdateOfPolicyInstalledAppsWithPinnedToNotExistentVersion) { - AddDummyIsolatedAppToRegistry( - profile(), iwa_info1_->url_info.origin().GetURL(), "installed iwa 1", - IsolationData::Builder(iwa_info1_->installed_location, - iwa_info1_->installed_version) - .Build(), - webapps::WebappInstallSource::IWA_EXTERNAL_POLICY); +TEST_F(IsolatedWebAppUpdateManagerUpdateMockTimeTest, + DoesNotDiscoverUpdateOfPolicyInstalledAppsWhenPinnedToIncorrectVersion) { + InitialIwaBundleForceInstall(CreateIwa1Bundle("1.0.0")); - AddDummyIsolatedAppToRegistry( - profile(), iwa_info2_->url_info.origin().GetURL(), "installed iwa 2", - IsolationData::Builder(iwa_info2_->installed_location, - iwa_info2_->installed_version) - .Build(), - webapps::WebappInstallSource::IWA_EXTERNAL_POLICY); + // Pin IWA to a version that is higher than the latest version. + test::EditForceInstalledIwaPolicy( + profile()->GetPrefs(), GetIwa1WebBundleId(), + test_update_server().CreateForceInstallPolicyEntry( + GetIwa1WebBundleId(), + /*update_channel=*/std::nullopt, + /*pinned_version=*/base::Version("5.0.0"))); - // Pin IWA 1 to a version that is higher than the latest (2.0.0). - // Pin IWA 2 to lower version than the current one (dowgrading by only pinning - // is not possible) - SetIwaForceInstallPolicy( - {{/*url_info=*/iwa_info1_->url_info, - /*update_manifest_url=*/iwa_info1_->update_manifest_url, - /*update_channel=*/std::nullopt, - /*pinned_version=*/base::Version("5.0.0")}, - {/*url_info=*/iwa_info2_->url_info, - /*update_manifest_url=*/iwa_info2_->update_manifest_url, - /*update_channel=*/std::nullopt, - /*pinned_version=*/base::Version("0.5.0")}}); + // New version appears, it is still lower than the `pinned_version`. + test_update_server().AddBundle(CreateIwa1Bundle("3.0.0")); - task_environment()->FastForwardBy( + task_environment().FastForwardBy( *update_manager().GetNextUpdateDiscoveryTimeForTesting() - base::TimeTicks::Now()); - task_environment()->RunUntilIdle(); - EXPECT_THAT(fake_provider().registrar_unsafe().GetAppById( - iwa_info1_->url_info.app_id()), - test::IwaIs(Eq("installed iwa 1"), - test::IsolationDataIs( - Eq(iwa_info1_->installed_location), - Eq(iwa_info1_->installed_version), - /*controlled_frame_partitions=*/_, - /*pending_update_info=*/Eq(std::nullopt), - /*integrity_block_data=*/_))); + AssertAppInstalledAtVersion(GetIwa1WebBundleId(), base::Version("1.0.0")); - EXPECT_THAT(fake_provider().registrar_unsafe().GetAppById( - iwa_info2_->url_info.app_id()), - test::IwaIs(Eq("installed iwa 2"), - test::IsolationDataIs( - Eq(iwa_info2_->installed_location), - Eq(iwa_info2_->installed_version), - /*controlled_frame_partitions=*/_, - /*pending_update_info=*/Eq(std::nullopt), - /*integrity_block_data=*/_))); + // Pin IWA to lower version than the current one (downgrading by setting + // `pinned_version` without setting `allow_downgrades` to true is impossible. + test::AddForceInstalledIwaToPolicy( + profile()->GetPrefs(), test_update_server().CreateForceInstallPolicyEntry( + GetIwa1WebBundleId(), + /*update_channel=*/std::nullopt, + /*pinned_version=*/base::Version("0.5.0"))); + + task_environment().FastForwardBy( + *update_manager().GetNextUpdateDiscoveryTimeForTesting() - + base::TimeTicks::Now()); + + AssertAppInstalledAtVersion(GetIwa1WebBundleId(), base::Version("1.0.0")); EXPECT_THAT(UpdateDiscoveryLog(), UnorderedElementsAre(IsDict(DictionaryHasValue( @@ -859,43 +595,28 @@ base::Value("Error::kUpdateManifestNoApplicableVersion"))))); EXPECT_THAT(UpdateDiscoveryLog(), SizeIs(1)); EXPECT_THAT(UpdateApplyLog(), IsEmpty()); - - fake_provider().Shutdown(); - ChromeBrowsingDataRemoverDelegateFactory::GetForProfile(profile()) - ->Shutdown(); } TEST_F(IsolatedWebAppUpdateManagerUpdateMockTimeTest, DiscoverDowngradeOfPolicyInstalledApps) { - AddDummyIsolatedAppToRegistry( - profile(), iwa_info2_->url_info.origin().GetURL(), "latest iwa 2", - IsolationData::Builder(iwa_info2_->installed_location, - base::Version("10.0.0")) - .Build(), - webapps::WebappInstallSource::IWA_EXTERNAL_POLICY); + InitialIwaBundleForceInstall(CreateIwa1Bundle("5.0.0")); - // Pin IWA to lower version than the current one - SetIwaForceInstallPolicy( - {{/*url_info=*/iwa_info2_->url_info, - /*update_manifest_url=*/iwa_info2_->update_manifest_url, - /*update_channel=*/std::nullopt, - /*pinned_version=*/iwa_info2_->update_version, - /*allow_downgrades=*/true}}); + // Pin IWA to a lower version than the current one. + test::EditForceInstalledIwaPolicy( + profile()->GetPrefs(), GetIwa1WebBundleId(), + test_update_server().CreateForceInstallPolicyEntry( + GetIwa1WebBundleId(), + /*update_channel=*/std::nullopt, + /*pinned_version=*/base::Version("1.0.0"), + /*allow_downgrades=*/true)); - EXPECT_THAT(update_manager().MaybeDiscoverUpdatesForApp( - iwa_info2_->url_info.app_id()), - IsTrue()); - task_environment()->RunUntilIdle(); + test_update_server().AddBundle(CreateIwa1Bundle("1.0.0")); - EXPECT_THAT(fake_provider().registrar_unsafe().GetAppById( - iwa_info2_->url_info.app_id()), - test::IwaIs(Eq("updated app 2"), - test::IsolationDataIs( - UpdateLocationMatcher(profile()), - Eq(iwa_info2_->update_version, ), - /*controlled_frame_partitions=*/_, - /*pending_update_info=*/Eq(std::nullopt), - /*integrity_block_data=*/_))); + task_environment().FastForwardBy( + *update_manager().GetNextUpdateDiscoveryTimeForTesting() - + base::TimeTicks::Now()); + + AssertAppInstalledAtVersion(GetIwa1WebBundleId(), base::Version("1.0.0")); EXPECT_THAT( UpdateDiscoveryLog(), @@ -903,17 +624,13 @@ "result", base::Value("Success::kUpdateFoundAndDryRunSuccessful"))))); EXPECT_THAT(UpdateDiscoveryLog(), SizeIs(1)); EXPECT_THAT(UpdateApplyLog(), SizeIs(1)); - - fake_provider().Shutdown(); - ChromeBrowsingDataRemoverDelegateFactory::GetForProfile(profile()) - ->Shutdown(); } TEST_F(IsolatedWebAppUpdateManagerUpdateMockTimeTest, MaybeDiscoverUpdatesForApp) { // Trigger updates for an app that is not installed. This should fail. EXPECT_THAT(update_manager().MaybeDiscoverUpdatesForApp( - iwa_info1_->url_info.app_id()), + GetAppId(GetIwa1WebBundleId())), IsFalse()); // Trigger updates for an app that is not an IWA. This should fail. @@ -922,95 +639,73 @@ EXPECT_THAT(update_manager().MaybeDiscoverUpdatesForApp(non_iwa_app_id), IsFalse()); - AddDummyIsolatedAppToRegistry( - profile(), iwa_info1_->url_info.origin().GetURL(), "installed iwa 1", - IsolationData::Builder(iwa_info1_->installed_location, - iwa_info1_->installed_version) - .Build(), - webapps::WebappInstallSource::IWA_EXTERNAL_POLICY); + auto url_info = + IsolatedWebAppUrlInfo::CreateFromSignedWebBundleId(GetIwa1WebBundleId()); + InitialIwaBundleForceInstall(CreateIwa1Bundle("1.0.0")); + fake_ui_manager().SetNumWindowsForApp(GetAppId(GetIwa1WebBundleId()), 1); - fake_ui_manager().SetNumWindowsForApp(iwa_info1_->url_info.app_id(), 1); + test::RemoveForceInstalledIwaFromPolicy(profile()->GetPrefs(), + GetIwa1WebBundleId()); + + AssertAppInstalledAtVersion(GetIwa1WebBundleId(), base::Version("1.0.0")); // Trigger updates for an app that is not installed via policy. This should // fail. EXPECT_THAT(update_manager().MaybeDiscoverUpdatesForApp( - iwa_info1_->url_info.app_id()), + GetAppId(GetIwa1WebBundleId())), IsFalse()); - SetIwaForceInstallPolicy( - {{iwa_info1_->url_info, iwa_info1_->update_manifest_url}}); + test_update_server().AddBundle(CreateIwa1Bundle("2.0.0")); + + test::AddForceInstalledIwaToPolicy( + profile()->GetPrefs(), + test_update_server().CreateForceInstallPolicyEntry(GetIwa1WebBundleId())); EXPECT_THAT(update_manager().MaybeDiscoverUpdatesForApp( - iwa_info1_->url_info.app_id()), + GetAppId(GetIwa1WebBundleId())), IsTrue()); - task_environment()->RunUntilIdle(); - EXPECT_THAT( - fake_provider().registrar_unsafe().GetAppById( - iwa_info1_->url_info.app_id()), - test::IwaIs(Eq("installed iwa 1"), - test::IsolationDataIs(Eq(iwa_info1_->installed_location), - Eq(iwa_info1_->installed_version), - /*controlled_frame_partitions=*/_, - test::PendingUpdateInfoIs( - UpdateLocationMatcher(profile()), - Eq(base::Version("2.0.0")), - /*integrity_block_data=*/_), - /*integrity_block_data=*/_))); + fake_ui_manager().SetNumWindowsForApp(GetAppId(GetIwa1WebBundleId()), 0); - EXPECT_THAT( - UpdateDiscoveryLog(), - UnorderedElementsAre(IsDict(DictionaryHasValue( - "result", base::Value("Success::kUpdateFoundAndDryRunSuccessful"))))); - EXPECT_THAT(UpdateApplyLog(), IsEmpty()); - - // TODO(crbug.com/40277668): As a temporary fix to avoid race conditions with - // `ScopedProfileKeepAlive`s, manually shutdown `KeyedService`s holding them. - fake_provider().Shutdown(); - ChromeBrowsingDataRemoverDelegateFactory::GetForProfile(profile()) - ->Shutdown(); + AssertAppDiscoveryTaskSuccessful(GetIwa1WebBundleId()); } TEST_F(IsolatedWebAppUpdateManagerUpdateMockTimeTest, DiscoverUpdatesNow) { - AddDummyIsolatedAppToRegistry( - profile(), iwa_info1_->url_info.origin().GetURL(), "installed iwa 1", - IsolationData::Builder(iwa_info1_->installed_location, - iwa_info1_->installed_version) - .Build(), - webapps::WebappInstallSource::IWA_EXTERNAL_POLICY); + InitialIwaBundleForceInstall(CreateIwa1Bundle("1.0.0")); - fake_ui_manager().SetNumWindowsForApp(iwa_info1_->url_info.app_id(), 1); - - SetIwaForceInstallPolicy( - {{iwa_info1_->url_info, iwa_info1_->update_manifest_url}}); + fake_ui_manager().SetNumWindowsForApp(GetAppId(GetIwa1WebBundleId()), 1); + test_update_server().AddBundle(CreateIwa1Bundle("2.0.0")); // After one hour, the update should not yet have run, but still be scheduled // (i.e. containing a value in the `std::optional`). - task_environment()->FastForwardBy(base::Hours(1)); + task_environment().FastForwardBy(base::Hours(1)); + auto old_update_discovery_time = update_manager().GetNextUpdateDiscoveryTimeForTesting(); EXPECT_THAT(old_update_discovery_time.has_value(), IsTrue()); - // Once we manually trigger update discovery, the update discovery timer - // should reset to a different time in the future. EXPECT_THAT(update_manager().DiscoverUpdatesNow(), Eq(1ul)); EXPECT_THAT(update_manager().GetNextUpdateDiscoveryTimeForTesting(), AllOf(Ne(old_update_discovery_time), Ge(base::TimeTicks::Now()))); - task_environment()->RunUntilIdle(); + AssertAppDiscoveryTaskSuccessful(GetIwa1WebBundleId()); - EXPECT_THAT( - fake_provider().registrar_unsafe().GetAppById( - iwa_info1_->url_info.app_id()), - test::IwaIs(Eq("installed iwa 1"), - test::IsolationDataIs(Eq(iwa_info1_->installed_location), - Eq(iwa_info1_->installed_version), - /*controlled_frame_partitions=*/_, - test::PendingUpdateInfoIs( - UpdateLocationMatcher(profile()), - Eq(base::Version("2.0.0")), - /*integrity_block_data=*/_), - /*integrity_block_data=*/_))); + EXPECT_THAT(UpdateApplyLog(), IsEmpty()); +} + +TEST_F(IsolatedWebAppUpdateManagerUpdateTest, + AppliesUpdatesAfterWindowIsClosed) { + InitialIwaBundleForceInstall(CreateIwa1Bundle("1.0.0")); + + fake_ui_manager().SetNumWindowsForApp(GetAppId(GetIwa1WebBundleId()), 1); + + test_update_server().AddBundle(CreateIwa1Bundle("2.0.0")); + update_manager().DiscoverUpdatesNow(); + + AssertAppDiscoveryTaskSuccessful(GetIwa1WebBundleId()); + + // Due to not closed IWA window, update is not applied yet. + AssertAppInstalledAtVersion(GetIwa1WebBundleId(), base::Version("1.0.0")); EXPECT_THAT( UpdateDiscoveryLog(), @@ -1018,85 +713,26 @@ "result", base::Value("Success::kUpdateFoundAndDryRunSuccessful"))))); EXPECT_THAT(UpdateApplyLog(), IsEmpty()); - // TODO(crbug.com/40277668): As a temporary fix to avoid race conditions with - // `ScopedProfileKeepAlive`s, manually shutdown `KeyedService`s holding them. - fake_provider().Shutdown(); - ChromeBrowsingDataRemoverDelegateFactory::GetForProfile(profile()) - ->Shutdown(); + fake_ui_manager().SetNumWindowsForApp(GetAppId(GetIwa1WebBundleId()), 0); + + AssertInstallationFinish(GetIwa1WebBundleId()); + AssertAppInstalledAtVersion(GetIwa1WebBundleId(), base::Version("2.0.0")); } TEST_F(IsolatedWebAppUpdateManagerUpdateTest, - ApplysUpdatesAfterWindowIsClosed) { - AddDummyIsolatedAppToRegistry( - profile(), iwa_info1_->url_info.origin().GetURL(), "installed app", - IsolationData::Builder(iwa_info1_->installed_location, - iwa_info1_->installed_version) - .Build(), - webapps::WebappInstallSource::IWA_EXTERNAL_POLICY); + AppliesUpdatesWithHigherPriorityThanUpdateDiscovery) { + InitialIwaBundleForceInstall(CreateIwa1Bundle("1.0.0")); + InitialIwaBundleForceInstall(CreateIwa2Bundle("2.0.0")); - fake_ui_manager().SetNumWindowsForApp(iwa_info1_->url_info.app_id(), 1); + // Add new bundles for both apps. + test_update_server().AddBundle(CreateIwa1Bundle("1.1.0")); + test_update_server().AddBundle(CreateIwa2Bundle("2.2.0")); - SetIwaForceInstallPolicy( - {{iwa_info1_->url_info, iwa_info1_->update_manifest_url}}); update_manager().DiscoverUpdatesNow(); - task_environment()->RunUntilIdle(); - - EXPECT_THAT( - fake_provider().registrar_unsafe().GetAppById( - iwa_info1_->url_info.app_id()), - test::IwaIs(Eq("installed app"), - test::IsolationDataIs(Eq(iwa_info1_->installed_location), - Eq(iwa_info1_->installed_version), - /*controlled_frame_partitions=*/_, - test::PendingUpdateInfoIs( - UpdateLocationMatcher(profile()), - Eq(iwa_info1_->update_version), - /*integrity_block_data=*/_), - /*integrity_block_data=*/_))); - - EXPECT_THAT( - UpdateDiscoveryLog(), - UnorderedElementsAre(IsDict(DictionaryHasValue( - "result", base::Value("Success::kUpdateFoundAndDryRunSuccessful"))))); - EXPECT_THAT(UpdateApplyLog(), IsEmpty()); - - fake_ui_manager().SetNumWindowsForApp(iwa_info1_->url_info.app_id(), 0); - task_environment()->RunUntilIdle(); - - EXPECT_THAT(UpdateApplyLog(), UnorderedElementsAre(IsDict(DictionaryHasValue( - "result", base::Value("Success"))))); - - EXPECT_THAT(fake_provider().registrar_unsafe().GetAppById( - iwa_info1_->url_info.app_id()), - test::IwaIs(iwa_info1_->update_app_name, - test::IsolationDataIs( - UpdateLocationMatcher(profile()), - Eq(iwa_info1_->update_version), - /*controlled_frame_partitions=*/_, - /*pending_update_info=*/Eq(std::nullopt), - /*integrity_block_data=*/_))); -} - -TEST_F(IsolatedWebAppUpdateManagerUpdateTest, - ApplysUpdatesWithHigherPriorityThanUpdateDiscovery) { - AddDummyIsolatedAppToRegistry( - profile(), iwa_info1_->url_info.origin().GetURL(), "installed app 1", - IsolationData::Builder(iwa_info1_->installed_location, - iwa_info1_->installed_version) - .Build(), - webapps::WebappInstallSource::IWA_EXTERNAL_POLICY); - AddDummyIsolatedAppToRegistry( - profile(), iwa_info2_->url_info.origin().GetURL(), "installed app 2", - IsolationData::Builder(iwa_info2_->installed_location, - iwa_info2_->installed_version) - .Build(), - webapps::WebappInstallSource::IWA_EXTERNAL_POLICY); - - SetIwaForceInstallPolicy( - {{iwa_info1_->url_info, iwa_info1_->update_manifest_url}, - {iwa_info2_->url_info, iwa_info2_->update_manifest_url}}); - update_manager().DiscoverUpdatesNow(); - task_environment()->RunUntilIdle(); + WebAppTestManifestUpdatedObserver manifest_updated_observer( + &provider().install_manager()); + manifest_updated_observer.BeginListeningAndWait( + {GetAppId(GetIwa1WebBundleId()), GetAppId(GetIwa2WebBundleId())}); { auto update_discovery_log = UpdateDiscoveryLog(); @@ -1136,164 +772,114 @@ << base::JoinString(ToVector(times, &base::Value::DebugString), ""); } - EXPECT_THAT(fake_provider().registrar_unsafe().GetAppById( - iwa_info1_->url_info.app_id()), - test::IwaIs(iwa_info1_->update_app_name, - test::IsolationDataIs( - UpdateLocationMatcher(profile()), - Eq(iwa_info1_->update_version), - /*controlled_frame_partitions=*/_, - /*pending_update_info=*/Eq(std::nullopt), - /*integrity_block_data=*/_))); + AssertAppInstalledAtVersion(GetIwa1WebBundleId(), base::Version("1.1.0")); - EXPECT_THAT(fake_provider().registrar_unsafe().GetAppById( - iwa_info2_->url_info.app_id()), - test::IwaIs(iwa_info2_->update_app_name, - test::IsolationDataIs( - UpdateLocationMatcher(profile()), - Eq(iwa_info2_->update_version), - /*controlled_frame_partitions=*/_, - /*pending_update_info=*/Eq(std::nullopt), - /*integrity_block_data=*/_))); + AssertAppInstalledAtVersion(GetIwa2WebBundleId(), base::Version("2.2.0")); } TEST_F(IsolatedWebAppUpdateManagerUpdateTest, StopsNonStartedUpdateDiscoveryTasksIfIwaIsUninstalled) { - profile_url_loader_factory().ClearResponses(); + url_loader_factory().ClearResponses(); - AddDummyIsolatedAppToRegistry( - profile(), iwa_info1_->url_info.origin().GetURL(), "installed app 1", - IsolationData::Builder(iwa_info1_->installed_location, - iwa_info1_->installed_version) - .Build(), - webapps::WebappInstallSource::IWA_EXTERNAL_POLICY); - AddDummyIsolatedAppToRegistry( - profile(), iwa_info2_->url_info.origin().GetURL(), "installed app 2", - IsolationData::Builder(iwa_info2_->installed_location, - iwa_info2_->installed_version) - .Build(), - webapps::WebappInstallSource::IWA_EXTERNAL_POLICY); + InitialIwaBundleForceInstall(CreateIwa1Bundle("1.0.0")); + InitialIwaBundleForceInstall(CreateIwa2Bundle("2.0.0")); - SetIwaForceInstallPolicy( - {{iwa_info1_->url_info, iwa_info1_->update_manifest_url}, - {iwa_info2_->url_info, iwa_info2_->update_manifest_url}}); + // Add updated bundles for both apps. + test_update_server().AddBundle(CreateIwa1Bundle("1.1.0")); + test_update_server().AddBundle(CreateIwa2Bundle("2.2.0")); + + std::optional<web_package::SignedWebBundleId> iwa_to_uninstall; + std::optional<web_package::SignedWebBundleId> iwa_to_keep; + + url_loader_factory().SetInterceptor( + base::BindLambdaForTesting([&](const network::ResourceRequest& request) { + // Only intercept the first update manifest request. + if (!iwa_to_uninstall) { + if (request.url == test_update_server().GetUpdateManifestUrlForIwa( + GetIwa2WebBundleId())) { + iwa_to_uninstall = GetIwa1WebBundleId(); + iwa_to_keep = GetIwa2WebBundleId(); + } else if (request.url == + test_update_server().GetUpdateManifestUrlForIwa( + GetIwa1WebBundleId())) { + iwa_to_uninstall = GetIwa2WebBundleId(); + iwa_to_keep = GetIwa1WebBundleId(); + } + } + })); + update_manager().DiscoverUpdatesNow(); - task_environment()->RunUntilIdle(); // Wait for the update discovery task of either app 1 or app 2 to request the // update manifest (which task starts first is undefined). - ASSERT_THAT(profile_url_loader_factory().NumPending(), Eq(1)); - EXPECT_THAT(UpdateDiscoveryTasks(), SizeIs(2)); // two tasks should be queued - EXPECT_THAT(UpdateDiscoveryLog(), IsEmpty()); // no task should have finished + ASSERT_TRUE(iwa_to_uninstall.has_value()); - // Uninstall the other IWA whose update discovery task has not yet started. - GURL pending_url = - profile_url_loader_factory().GetPendingRequest(0)->request.url; - IwaInfo* iwa_to_keep; - IwaInfo* iwa_to_uninstall; - if (pending_url == iwa_info1_->update_manifest_url) { - iwa_to_keep = &*iwa_info1_; - iwa_to_uninstall = &*iwa_info2_; - } else if (pending_url == iwa_info2_->update_manifest_url) { - iwa_to_keep = &*iwa_info2_; - iwa_to_uninstall = &*iwa_info1_; - } else { - FAIL() << "Unexpected pending request for: " << pending_url; - } - - EXPECT_THAT(UninstallPolicyInstalledIwa(iwa_to_uninstall->url_info.app_id()), - Eq(webapps::UninstallResultCode::kAppRemoved)); - - EXPECT_THAT(UpdateDiscoveryTasks(), - UnorderedElementsAre(IsDict(DictionaryHasValue( - "app_id", base::Value(iwa_to_keep->url_info.app_id()))))); + // Verify that two discovery tasks are queued and none have finished. + EXPECT_THAT(UpdateDiscoveryTasks(), SizeIs(2)); EXPECT_THAT(UpdateDiscoveryLog(), IsEmpty()); - // TODO(crbug.com/386760496): Temporary fix to ensure temp folder won't be - // used during clean-up. Attempts to delete files that are in use caused - // failures on Windows. -#if BUILDFLAG(IS_WIN) - task_environment()->RunUntilIdle(); -#endif // BUILDFLAG(IS_WIN) + test::RemoveForceInstalledIwaFromPolicy(profile()->GetPrefs(), + iwa_to_uninstall.value()); - // TODO(crbug.com/40277668): As a temporary fix to avoid race conditions with - // `ScopedProfileKeepAlive`s, manually shutdown `KeyedService`s holding them. - fake_provider().Shutdown(); - ChromeBrowsingDataRemoverDelegateFactory::GetForProfile(profile()) - ->Shutdown(); -} + WebAppTestUninstallObserver uninstall_observer(profile()); + uninstall_observer.BeginListeningAndWait( + {GetAppId(iwa_to_uninstall.value())}); -// TODO(b/338380813): The test is flaky on asan ChromeOS builder. -TEST_F(IsolatedWebAppUpdateManagerUpdateTest, DISABLED_StopsWaitingIfIwaIsUninstalled) { - AddDummyIsolatedAppToRegistry( - profile(), iwa_info1_->url_info.origin().GetURL(), "installed app", - IsolationData::Builder(iwa_info1_->installed_location, - iwa_info1_->installed_version) - .Build(), - webapps::WebappInstallSource::IWA_EXTERNAL_POLICY); + AssertInstallationFinish(iwa_to_keep.value()); - fake_ui_manager().SetNumWindowsForApp(iwa_info1_->url_info.app_id(), 1); - - SetIwaForceInstallPolicy( - {{iwa_info1_->url_info, iwa_info1_->update_manifest_url}}); - update_manager().DiscoverUpdatesNow(); - task_environment()->RunUntilIdle(); - + // Check that only 1 update was discovered and applied. EXPECT_THAT( UpdateDiscoveryLog(), UnorderedElementsAre(IsDict(DictionaryHasValue( "result", base::Value("Success::kUpdateFoundAndDryRunSuccessful"))))); + EXPECT_THAT(UpdateApplyLog(), + UnorderedElementsAre(IsDict(DictionaryHasValue( + "app_id", base::Value(GetAppId(iwa_to_keep.value())))))); +} + +// TODO(crbug.com/338380813): The test is flaky on asan ChromeOS builder. +TEST_F(IsolatedWebAppUpdateManagerUpdateTest, StopsWaitingIfIwaIsUninstalled) { + InitialIwaBundleForceInstall(CreateIwa1Bundle("1.0.0")); + + fake_ui_manager().SetNumWindowsForApp(GetAppId(GetIwa1WebBundleId()), 1); + + test_update_server().AddBundle(CreateIwa1Bundle("2.0.0")); + update_manager().DiscoverUpdatesNow(); + AssertAppDiscoveryTaskSuccessful(GetIwa1WebBundleId()); + EXPECT_THAT(UpdateApplyWaiters(), UnorderedElementsAre(IsDict(DictionaryHasValue( - "app_id", base::Value(iwa_info1_->url_info.app_id()))))); + "app_id", base::Value(GetAppId(GetIwa1WebBundleId())))))); - EXPECT_THAT(UninstallPolicyInstalledIwa(iwa_info1_->url_info.app_id()), - Eq(webapps::UninstallResultCode::kAppRemoved)); + AssertAppInstalledAtVersion(GetIwa1WebBundleId(), base::Version("1.0.0")); + // IWA uninstallation. + { + test::RemoveForceInstalledIwaFromPolicy(profile()->GetPrefs(), + GetIwa1WebBundleId()); + WebAppTestUninstallObserver uninstall_observer(profile()); + uninstall_observer.BeginListeningAndWait({GetAppId(GetIwa1WebBundleId())}); + } EXPECT_THAT(UpdateApplyWaiters(), IsEmpty()); EXPECT_THAT(UpdateApplyTasks(), IsEmpty()); EXPECT_THAT(UpdateApplyLog(), IsEmpty()); - - fake_ui_manager().SetNumWindowsForApp(iwa_info1_->url_info.app_id(), 0); - - // TODO(crbug.com/386760496): Temporary fix to ensure temp folder won't be - // used during clean-up. Attempts to delete files that are in use caused - // failures on Windows. -#if BUILDFLAG(IS_WIN) - task_environment()->RunUntilIdle(); -#endif // BUILDFLAG(IS_WIN) - - // TODO(crbug.com/40277668): As a temporary fix to avoid race conditions with - // `ScopedProfileKeepAlive`s, manually shutdown `KeyedService`s holding them. - fake_provider().Shutdown(); - ChromeBrowsingDataRemoverDelegateFactory::GetForProfile(profile()) - ->Shutdown(); } -// TODO(b/326527744): This test is flaky on asan ChromeOS builder. +// TODO(crbug.com/326527744): This test is flaky on asan ChromeOS builder. TEST_F(IsolatedWebAppUpdateManagerUpdateTest, - DISABLED_StopsNonStartedUpdateApplyTasksIfIwaIsUninstalled) { - AddDummyIsolatedAppToRegistry( - profile(), iwa_info1_->url_info.origin().GetURL(), "installed app 1", - IsolationData::Builder(iwa_info1_->installed_location, - iwa_info1_->installed_version) - .Build(), - webapps::WebappInstallSource::IWA_EXTERNAL_POLICY); - AddDummyIsolatedAppToRegistry( - profile(), iwa_info2_->url_info.origin().GetURL(), "installed app 2", - IsolationData::Builder(iwa_info2_->installed_location, - iwa_info2_->installed_version) - .Build(), - webapps::WebappInstallSource::IWA_EXTERNAL_POLICY); + StopsNonStartedUpdateApplyTasksIfIwaIsUninstalled) { + InitialIwaBundleForceInstall(CreateIwa1Bundle("1.0.0")); + InitialIwaBundleForceInstall(CreateIwa2Bundle("2.0.0")); - fake_ui_manager().SetNumWindowsForApp(iwa_info1_->url_info.app_id(), 1); - fake_ui_manager().SetNumWindowsForApp(iwa_info2_->url_info.app_id(), 1); + fake_ui_manager().SetNumWindowsForApp(GetAppId(GetIwa1WebBundleId()), 1); + fake_ui_manager().SetNumWindowsForApp(GetAppId(GetIwa2WebBundleId()), 1); - SetIwaForceInstallPolicy( - {{iwa_info1_->url_info, iwa_info1_->update_manifest_url}, - {iwa_info2_->url_info, iwa_info2_->update_manifest_url}}); + test_update_server().AddBundle(CreateIwa1Bundle("1.1.0")); + test_update_server().AddBundle(CreateIwa2Bundle("2.2.0")); + update_manager().DiscoverUpdatesNow(); - task_environment()->RunUntilIdle(); + AssertAppDiscoveryTaskSuccessful(GetIwa1WebBundleId()); + AssertAppDiscoveryTaskSuccessful(GetIwa2WebBundleId()); EXPECT_THAT( UpdateDiscoveryLog(), @@ -1307,9 +893,9 @@ EXPECT_THAT(UpdateApplyWaiters(), UnorderedElementsAre( IsDict(DictionaryHasValue( - "app_id", base::Value(iwa_info1_->url_info.app_id()))), + "app_id", base::Value(GetAppId(GetIwa1WebBundleId())))), IsDict(DictionaryHasValue( - "app_id", base::Value(iwa_info2_->url_info.app_id()))))); + "app_id", base::Value(GetAppId(GetIwa2WebBundleId())))))); // Wait for the update apply task of either app 1 or app 2 to start. base::test::TestFuture<IsolatedWebAppUrlInfo> future; @@ -1317,43 +903,28 @@ ApplyPendingIsolatedWebAppUpdate(_, _, _, _, _)) .WillOnce(WithArg<0>(Invoke( &future, &base::test::TestFuture<IsolatedWebAppUrlInfo>::SetValue))); - fake_ui_manager().SetNumWindowsForApp(iwa_info1_->url_info.app_id(), 0); - fake_ui_manager().SetNumWindowsForApp(iwa_info2_->url_info.app_id(), 0); + + fake_ui_manager().SetNumWindowsForApp(GetAppId(GetIwa1WebBundleId()), 0); + fake_ui_manager().SetNumWindowsForApp(GetAppId(GetIwa2WebBundleId()), 0); webapps::AppId iwa_to_keep = future.Take().app_id(); EXPECT_THAT(UpdateApplyTasks(), SizeIs(2)); // two tasks should be queued EXPECT_THAT(UpdateApplyLog(), IsEmpty()); // no task should have finished // Uninstall the other IWA whose update apply task has not yet started. - IwaInfo* iwa_to_uninstall; - if (iwa_to_keep == iwa_info1_->url_info.app_id()) { - iwa_to_uninstall = &*iwa_info2_; - } else if (iwa_to_keep == iwa_info2_->url_info.app_id()) { - iwa_to_uninstall = &*iwa_info1_; - } else { - FAIL() << "Unexpected IWA app id: " << iwa_to_keep; - } + web_package::SignedWebBundleId iwa_to_uninstall = + (iwa_to_keep == GetAppId(GetIwa1WebBundleId())) ? GetIwa2WebBundleId() + : GetIwa1WebBundleId(); - EXPECT_THAT(UninstallPolicyInstalledIwa(iwa_to_uninstall->url_info.app_id()), - Eq(webapps::UninstallResultCode::kAppRemoved)); + test::RemoveForceInstalledIwaFromPolicy(profile()->GetPrefs(), + iwa_to_uninstall); + WebAppTestUninstallObserver uninstall_observer(profile()); + uninstall_observer.BeginListeningAndWait({GetAppId(iwa_to_uninstall)}); EXPECT_THAT(UpdateApplyTasks(), UnorderedElementsAre(IsDict( DictionaryHasValue("app_id", base::Value(iwa_to_keep))))); EXPECT_THAT(UpdateApplyLog(), IsEmpty()); - - // TODO(crbug.com/386760496): Temporary fix to ensure temp folder won't be - // used during clean-up. Attempts to delete files that are in use caused - // failures on Windows. -#if BUILDFLAG(IS_WIN) - task_environment()->RunUntilIdle(); -#endif // BUILDFLAG(IS_WIN) - - // TODO(crbug.com/40277668): As a temporary fix to avoid race conditions with - // `ScopedProfileKeepAlive`s, manually shutdown `KeyedService`s holding them. - fake_provider().Shutdown(); - ChromeBrowsingDataRemoverDelegateFactory::GetForProfile(profile()) - ->Shutdown(); } class IsolatedWebAppUpdateManagerUpdateApplyOnStartupTest @@ -1361,31 +932,36 @@ protected: void SeedWebAppDatabase() override { // Seed the `WebAppProvider` with an IWA before it is started. - EXPECT_THAT(fake_provider().is_registry_ready(), IsFalse()); + EXPECT_THAT(provider().is_registry_ready(), IsFalse()); base::FilePath path = update_location_.GetPath(profile()->GetPath()); EXPECT_THAT(base::CreateDirectory(path.DirName()), IsTrue()); auto update_bundle = IsolatedWebAppBuilder( - ManifestBuilder() - .SetVersion(iwa_info1_->update_version.GetString()) - .SetName("updated iwa")) - .BuildBundle(path, iwa_info1_->key_pair); + ManifestBuilder().SetVersion("2.0.0").SetName("updated iwa")) + .BuildBundle(path, test::GetDefaultEd25519KeyPair()); + update_bundle->TrustSigningKey(); + update_bundle->FakeInstallPageState(profile()); + + auto url_info = IsolatedWebAppUrlInfo::CreateFromSignedWebBundleId( + GetIwa1WebBundleId()); std::unique_ptr<WebApp> iwa = CreateIsolatedWebApp( - iwa_info1_->url_info.origin().GetURL(), - IsolationData::Builder(iwa_info1_->installed_location, - iwa_info1_->installed_version) + url_info.origin().GetURL(), + IsolationData::Builder( + IwaStorageOwnedBundle{"iwa1", /*dev_mode=*/false}, + base::Version("1.0.0")) .SetPendingUpdateInfo(IsolationData::PendingUpdateInfo( - update_location_, iwa_info1_->update_version)) + update_location_, base::Version("2.0.0"))) .Build()); - CreateStoragePartition(iwa_info1_->url_info); + + CreateStoragePartition(url_info); Registry registry; registry.emplace(iwa->app_id(), std::move(iwa)); - auto& database_factory = static_cast<FakeWebAppDatabaseFactory&>( - fake_provider().database_factory()); + auto& database_factory = + static_cast<FakeWebAppDatabaseFactory&>(provider().database_factory()); database_factory.WriteRegistry(registry); } @@ -1419,19 +995,16 @@ TEST_F(IsolatedWebAppUpdateManagerUpdateApplyOnStartupTest, SchedulesPendingUpdateApplyTasks) { - WebAppTestManifestUpdatedObserver manifest_updated_observer( - &fake_provider().install_manager()); - manifest_updated_observer.BeginListening({iwa_info1_->url_info.app_id()}); - manifest_updated_observer.Wait(); + AssertInstallationFinish(GetIwa1WebBundleId()); - EXPECT_THAT(fake_provider().registrar_unsafe().GetAppById( - iwa_info1_->url_info.app_id()), - test::IwaIs(iwa_info1_->update_app_name, - test::IsolationDataIs( - update_location_, Eq(iwa_info1_->update_version), - /*controlled_frame_partitions=*/_, - /*pending_update_info=*/Eq(std::nullopt), - /*integrity_block_data=*/_))); + EXPECT_THAT( + provider().registrar_unsafe().GetAppById(GetAppId(GetIwa1WebBundleId())), + test::IwaIs( + "updated iwa", + test::IsolationDataIs(update_location_, Eq(base::Version("2.0.0")), + /*controlled_frame_partitions=*/_, + /*pending_update_info=*/Eq(std::nullopt), + /*integrity_block_data=*/_))); } class IsolatedWebAppUpdateManagerDiscoveryTimerTest @@ -1439,7 +1012,7 @@ protected: void SetUp() override { IsolatedWebAppUpdateManagerTest::SetUp(); - fake_provider().SetEnableAutomaticIwaUpdates( + provider().SetEnableAutomaticIwaUpdates( FakeWebAppProvider::AutomaticIwaUpdateStrategy::kForceEnabled); test::AwaitStartWebAppProviderAndSubsystems(profile()); } @@ -1456,8 +1029,13 @@ StartsUpdateDiscoveryTimerWithJitter) { std::vector<base::TimeTicks> times; for (int i = 0; i < 10; ++i) { - webapps::AppId app_id = AddDummyIsolatedAppToRegistry( - profile(), GURL("isolated-app://a"), "iwa"); + std::unique_ptr<ScopedBundledIsolatedWebApp> app = + IsolatedWebAppBuilder(ManifestBuilder().SetVersion("1.0.0")) + .BuildBundle(); + app->FakeInstallPageState(profile()); + app->TrustSigningKey(); + app->InstallChecked(profile()); + auto time = update_manager().GetNextUpdateDiscoveryTimeForTesting(); EXPECT_THAT(time, Optional(AllOf(Ge(base::TimeTicks::Now() + base::Hours(4)), @@ -1469,17 +1047,11 @@ times.push_back(*time); } - test::UninstallWebApp(profile(), app_id); + test::UninstallWebApp(profile(), GetAppId(app->web_bundle_id())); EXPECT_THAT( update_manager().GetNextUpdateDiscoveryTimeForTesting().has_value(), IsFalse()); } - - // TODO(crbug.com/40277668): As a temporary fix to avoid race conditions with - // `ScopedProfileKeepAlive`s, manually shutdown `KeyedService`s holding them. - fake_provider().Shutdown(); - ChromeBrowsingDataRemoverDelegateFactory::GetForProfile(profile()) - ->Shutdown(); } TEST_F(IsolatedWebAppUpdateManagerDiscoveryTimerTest, @@ -1494,19 +1066,17 @@ update_manager().GetNextUpdateDiscoveryTimeForTesting().has_value(), IsFalse()); - webapps::AppId iwa_app_id1 = AddDummyIsolatedAppToRegistry( - profile(), GURL("isolated-app://a"), "iwa1"); + CreateIwa1Bundle("1.0.0")->InstallChecked(profile()); EXPECT_THAT( update_manager().GetNextUpdateDiscoveryTimeForTesting().has_value(), IsTrue()); - webapps::AppId iwa_app_id2 = AddDummyIsolatedAppToRegistry( - profile(), GURL("isolated-app://b"), "iwa2"); + CreateIwa2Bundle("2.0.0")->InstallChecked(profile()); EXPECT_THAT( update_manager().GetNextUpdateDiscoveryTimeForTesting().has_value(), IsTrue()); - test::UninstallWebApp(profile(), iwa_app_id1); + test::UninstallWebApp(profile(), GetAppId(GetIwa1WebBundleId())); EXPECT_THAT( update_manager().GetNextUpdateDiscoveryTimeForTesting().has_value(), IsTrue()); @@ -1516,7 +1086,7 @@ update_manager().GetNextUpdateDiscoveryTimeForTesting().has_value(), IsTrue()); - test::UninstallWebApp(profile(), iwa_app_id2); + test::UninstallWebApp(profile(), GetAppId(GetIwa2WebBundleId())); EXPECT_THAT( update_manager().GetNextUpdateDiscoveryTimeForTesting().has_value(), IsFalse()); @@ -1531,23 +1101,26 @@ : public IsolatedWebAppUpdateManagerTest, public ::testing::WithParamInterface<FeatureFlagParam> { public: - IsolatedWebAppUpdateManagerFeatureFlagTest() - : IsolatedWebAppUpdateManagerTest(GetParam().feature_states) {} + IsolatedWebAppUpdateManagerFeatureFlagTest() { + scoped_feature_list_.InitWithFeatureStates(GetParam().feature_states); + } protected: void SetUp() override { IsolatedWebAppUpdateManagerTest::SetUp(); // Disable manual overwrite of automatic update behavior and thus behave // like it would outside of tests. - fake_provider().SetEnableAutomaticIwaUpdates( + provider().SetEnableAutomaticIwaUpdates( FakeWebAppProvider::AutomaticIwaUpdateStrategy::kDefault); test::AwaitStartWebAppProviderAndSubsystems(profile()); } + + base::test::ScopedFeatureList scoped_feature_list_; }; TEST_P(IsolatedWebAppUpdateManagerFeatureFlagTest, DoesUpdateDiscoveryIfFeatureFlagsAreEnabled) { - AddDummyIsolatedAppToRegistry(profile(), GURL("isolated-app://a"), "iwa"); + CreateIwa1Bundle("1.0.0")->InstallChecked(profile()); EXPECT_THAT( update_manager().GetNextUpdateDiscoveryTimeForTesting().has_value(), @@ -1572,8 +1145,7 @@ .feature_states = {{features::kIsolatedWebApps, true}, {features::kIsolatedWebAppAutomaticUpdates, true}}, - .expected_result = true} - )); + .expected_result = true})); } // namespace
diff --git a/chrome/browser/web_applications/isolated_web_apps/policy/isolated_web_app_policy_manager_ash_browsertest.cc b/chrome/browser/web_applications/isolated_web_apps/policy/isolated_web_app_policy_manager_ash_browsertest.cc index 6442ae4d..9b0185e 100644 --- a/chrome/browser/web_applications/isolated_web_apps/policy/isolated_web_app_policy_manager_ash_browsertest.cc +++ b/chrome/browser/web_applications/isolated_web_apps/policy/isolated_web_app_policy_manager_ash_browsertest.cc
@@ -519,7 +519,7 @@ EXPECT_EQ(provider->registrar_unsafe().GetInstallState(kAppId1), proto::InstallState::INSTALLED_WITH_OS_INTEGRATION); - EXPECT_TRUE(provider->registrar_unsafe().IsNotInRegistrar(kAppId2)); + EXPECT_FALSE(provider->registrar_unsafe().IsInRegistrar(kAppId2)); } // Set the policy with 2 IWAs and wait for the second IWA to be re-installed.
diff --git a/chrome/browser/web_applications/isolated_web_apps/test/isolated_web_app_test.cc b/chrome/browser/web_applications/isolated_web_apps/test/isolated_web_app_test.cc index 75ad4fd6..7d3f2eb 100644 --- a/chrome/browser/web_applications/isolated_web_apps/test/isolated_web_app_test.cc +++ b/chrome/browser/web_applications/isolated_web_apps/test/isolated_web_app_test.cc
@@ -5,6 +5,9 @@ #include "chrome/browser/web_applications/isolated_web_apps/test/isolated_web_app_test.h" #include "base/test/gmock_expected_support.h" +#include "base/test/test_timeouts.h" +#include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate.h" +#include "chrome/browser/browsing_data/chrome_browsing_data_remover_delegate_factory.h" #include "chrome/browser/component_updater/iwa_key_distribution_component_installer.h" #include "chrome/browser/web_applications/isolated_web_apps/test/key_distribution/test_utils.h" #include "chrome/common/chrome_features.h" @@ -57,15 +60,30 @@ } void IsolatedWebAppTest::TearDown() { -#if BUILDFLAG(ENABLE_NACL) - nacl::NaClBrowser::ClearAndDeleteDelegate(); -#endif // BUILDFLAG(ENABLE_NACL) - + task_environment().RunUntilIdle(); // Manually shut down the provider and subsystems so that async tasks are // stopped. // Note: `DeleteAllTestingProfiles` doesn't actually destruct profiles and // therefore doesn't Shutdown keyed services like the provider. provider().Shutdown(); + + ChromeBrowsingDataRemoverDelegateFactory::GetForProfile(profile()) + ->Shutdown(); + + if (task_environment().UsesMockTime()) { + // TODO(crbug.com/299074540): Without this line, subsequent tests are unable + // to use `test::UninstallWebApp`, which will hang forever. This has + // something to do with the combination of `MOCK_TIME` and NaCl, because + // the code ends up hanging forever in + // `PnaclTranslationCache::DoomEntriesBetween`. A simple `FastForwardBy` + // here seems to alleviate this issue. + task_environment().FastForwardBy(TestTimeouts::tiny_timeout()); + } + +#if BUILDFLAG(ENABLE_NACL) + nacl::NaClBrowser::ClearAndDeleteDelegate(); +#endif // BUILDFLAG(ENABLE_NACL) + os_integration_test_override_.reset(); profile_ = nullptr;
diff --git a/chrome/browser/web_applications/isolated_web_apps/test/iwa_test_server_configurator.cc b/chrome/browser/web_applications/isolated_web_apps/test/iwa_test_server_configurator.cc index 4e0fdadd..fc6a658f 100644 --- a/chrome/browser/web_applications/isolated_web_apps/test/iwa_test_server_configurator.cc +++ b/chrome/browser/web_applications/isolated_web_apps/test/iwa_test_server_configurator.cc
@@ -59,12 +59,13 @@ base::Value::Dict IwaTestServerConfigurator::CreateForceInstallPolicyEntry( const web_package::SignedWebBundleId& web_bundle_id, const std::optional<UpdateChannel>& update_channel, - const std::optional<base::Version>& pinned_version) { + const std::optional<base::Version>& pinned_version, + bool allow_downgrades) { return test::CreateForceInstallIwaPolicyEntry( web_bundle_id, test::BundleVersionsStorage::GetUpdateManifestUrl(GURL(kServerBaseUrl), web_bundle_id), - update_channel, pinned_version); + update_channel, pinned_version, allow_downgrades); } } // namespace web_app
diff --git a/chrome/browser/web_applications/isolated_web_apps/test/iwa_test_server_configurator.h b/chrome/browser/web_applications/isolated_web_apps/test/iwa_test_server_configurator.h index dac1a94..3a92e89c 100644 --- a/chrome/browser/web_applications/isolated_web_apps/test/iwa_test_server_configurator.h +++ b/chrome/browser/web_applications/isolated_web_apps/test/iwa_test_server_configurator.h
@@ -37,7 +37,13 @@ static base::Value::Dict CreateForceInstallPolicyEntry( const web_package::SignedWebBundleId& web_bundle_id, const std::optional<UpdateChannel>& update_channel = std::nullopt, - const std::optional<base::Version>& pinned_version = std::nullopt); + const std::optional<base::Version>& pinned_version = std::nullopt, + bool allow_downgrades = false); + + GURL GetUpdateManifestUrlForIwa( + const web_package::SignedWebBundleId& web_bundle_id) { + return storage_.GetUpdateManifestUrl(web_bundle_id); + } private: void RegenerateServedUpdateManifest(
diff --git a/chrome/browser/web_applications/isolated_web_apps/test/policy_test_utils.cc b/chrome/browser/web_applications/isolated_web_apps/test/policy_test_utils.cc index 26ad448..2f38701 100644 --- a/chrome/browser/web_applications/isolated_web_apps/test/policy_test_utils.cc +++ b/chrome/browser/web_applications/isolated_web_apps/test/policy_test_utils.cc
@@ -20,6 +20,33 @@ // RAII applies the update. } +// Removes the policy entry associated with the given `web_bundle_id` from +// `prefs::kIsolatedWebAppInstallForceList`. +void RemoveForceInstalledIwaFromPolicy( + PrefService* prefs, + const web_package::SignedWebBundleId& web_bundle_id) { + ScopedListPrefUpdate update{prefs, prefs::kIsolatedWebAppInstallForceList}; + update->EraseIf([&web_bundle_id](const base::Value& entry) { + const std::string* id = entry.GetDict().FindString(kPolicyWebBundleIdKey); + return id && *id == web_bundle_id.id(); + }); +} + +// Edits the policy entry associated with the given `web_bundle_id` in +// `prefs::kIsolatedWebAppInstallForceList`. +void EditForceInstalledIwaPolicy( + PrefService* prefs, + const web_package::SignedWebBundleId& web_bundle_id, + base::Value::Dict policy_entry) { + ScopedListPrefUpdate update{prefs, prefs::kIsolatedWebAppInstallForceList}; + auto itr = + base::ranges::find(*update, web_bundle_id.id(), [](const auto& entry) { + return *entry.GetDict().FindString(kPolicyWebBundleIdKey); + }); + CHECK(itr != update->end()); + itr->GetDict() = std::move(policy_entry); +} + // Generates a policy entry that can be appended to // `prefs::kIsolatedWebAppInstallForceList` in order to force-install the IWA. base::Value::Dict CreateForceInstallIwaPolicyEntry(
diff --git a/chrome/browser/web_applications/isolated_web_apps/test/policy_test_utils.h b/chrome/browser/web_applications/isolated_web_apps/test/policy_test_utils.h index 7991b20..692acba 100644 --- a/chrome/browser/web_applications/isolated_web_apps/test/policy_test_utils.h +++ b/chrome/browser/web_applications/isolated_web_apps/test/policy_test_utils.h
@@ -24,6 +24,19 @@ void AddForceInstalledIwaToPolicy(PrefService* prefs, base::Value::Dict policy_entry); +// Removes the policy entry associated with the given `web_bundle_id` from +// `prefs::kIsolatedWebAppInstallForceList`. +void RemoveForceInstalledIwaFromPolicy( + PrefService* prefs, + const web_package::SignedWebBundleId& web_bundle_id); + +// Edits the policy entry associated with the given `web_bundle_id` in +// `prefs::kIsolatedWebAppInstallForceList`. +void EditForceInstalledIwaPolicy( + PrefService* prefs, + const web_package::SignedWebBundleId& web_bundle_id, + base::Value::Dict policy_entry); + // Generates a policy entry that can be appended to // `prefs::kIsolatedWebAppInstallForceList` in order to force-install the IWA. base::Value::Dict CreateForceInstallIwaPolicyEntry(
diff --git a/chrome/browser/webauthn/authenticator_request_dialog_model.cc b/chrome/browser/webauthn/authenticator_request_dialog_model.cc index c827253..83bf783 100644 --- a/chrome/browser/webauthn/authenticator_request_dialog_model.cc +++ b/chrome/browser/webauthn/authenticator_request_dialog_model.cc
@@ -17,7 +17,7 @@ #include "base/strings/utf_string_conversions.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/signin/identity_manager_factory.h" -#include "chrome/browser/ui/webauthn/authenticator_request_dialog.h" +#include "chrome/browser/ui/webauthn/authenticator_request_dialog_view_controller.h" #include "chrome/browser/ui/webauthn/authenticator_request_window.h" #include "chrome/browser/webauthn/authenticator_transport.h" #include "chrome/browser/webauthn/webauthn_pref_names.h" @@ -166,7 +166,7 @@ break; case StepUIType::DIALOG: - ShowAuthenticatorRequestDialog(web_contents, this); + AuthenticatorRequestDialogViewController::Show(web_contents, this); break; case StepUIType::WINDOW:
diff --git a/chrome/build/android-arm32.pgo.txt b/chrome/build/android-arm32.pgo.txt index 4c216b3..f51b4bca 100644 --- a/chrome/build/android-arm32.pgo.txt +++ b/chrome/build/android-arm32.pgo.txt
@@ -1 +1 @@ -chrome-android32-main-1736488671-062c11b057e1bc0d6467e98e399d703664cd0c2c-92eb14dd09feef366e5e80bd838857b3dabc43a9.profdata +chrome-android32-main-1736510306-cd6adbbcbcd34e23bf35589a1993b59aa1ba396c-92c2bb99b59079b19c3a40503b593091c01b9b4b.profdata
diff --git a/chrome/build/android-arm64.pgo.txt b/chrome/build/android-arm64.pgo.txt index eb894c8..dd80c1d 100644 --- a/chrome/build/android-arm64.pgo.txt +++ b/chrome/build/android-arm64.pgo.txt
@@ -1 +1 @@ -chrome-android64-main-1736484074-29b32f4af2940b5aeb0e840cfc2a8c9b3e6918cb-245a267980bb0938e995c25703553f580e362412.profdata +chrome-android64-main-1736507648-802ddfb153e2a4738c4d0ba17f67307d609f9b4b-b92fa63a9356f9cbcac5ee1a2da746f531b8df12.profdata
diff --git a/chrome/build/mac-arm.pgo.txt b/chrome/build/mac-arm.pgo.txt index 7b67e49..b6cdd458 100644 --- a/chrome/build/mac-arm.pgo.txt +++ b/chrome/build/mac-arm.pgo.txt
@@ -1 +1 @@ -chrome-mac-arm-main-1736488671-c5028d8835939ee1782068d3e87e4f0bd22dcc04-92eb14dd09feef366e5e80bd838857b3dabc43a9.profdata +chrome-mac-arm-main-1736510306-2fac4285aa434fba742a653542a5a45b41aab61a-92c2bb99b59079b19c3a40503b593091c01b9b4b.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt index 9e2cb51..0850557 100644 --- a/chrome/build/win32.pgo.txt +++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@ -chrome-win32-main-1736467164-ecc0a7969ebe960d533908ab5af241775eff6496-724a5092e0411adcb81495777e552e1b63878fc6.profdata +chrome-win32-main-1736488671-9988bbfaf76a35b3481ee0950854e0983e740cc6-92eb14dd09feef366e5e80bd838857b3dabc43a9.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index c6d8df08..416de7b 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-main-1736477787-36e30789a4a998b8624e24fc56ddb8450dccf29a-66a085896e908d0d9cd52d1e0993a0320cb09fa6.profdata +chrome-win64-main-1736488671-40084f4fc897080e52f12008db36a0491bf19c65-92eb14dd09feef366e5e80bd838857b3dabc43a9.profdata
diff --git a/chrome/chrome_paks.gni b/chrome/chrome_paks.gni index 4430bc2..48b88a2 100644 --- a/chrome/chrome_paks.gni +++ b/chrome/chrome_paks.gni
@@ -123,6 +123,7 @@ "$root_gen_dir/components/metrics/metrics_server_urls.pak", "$root_gen_dir/components/net_export_resources.pak", "$root_gen_dir/components/safe_browsing_resources.pak", + "$root_gen_dir/components/translate_internals_resources.pak", "$root_gen_dir/components/user_actions_ui_resources.pak", "$root_gen_dir/components/version_ui_resources.pak", "$root_gen_dir/content/attribution_internals_resources.pak",
diff --git a/chrome/common/chromeos/extensions/api/diagnostics.idl b/chrome/common/chromeos/extensions/api/diagnostics.idl index 0597b44..7f07822 100644 --- a/chrome/common/chromeos/extensions/api/diagnostics.idl +++ b/chrome/common/chromeos/extensions/api/diagnostics.idl
@@ -186,7 +186,7 @@ dictionary NetworkBandwidthRoutineRunningInfo { // The type of test that routine is running. NetworkBandwidthRoutineRunningType type; - // The current network speed in Kbps. + // The current network speed in Kbit/s. double speedKbps; };
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc index b662460..2f99417fd 100644 --- a/chrome/renderer/chrome_content_renderer_client.cc +++ b/chrome/renderer/chrome_content_renderer_client.cc
@@ -704,14 +704,9 @@ render_frame, associated_interfaces); auto password_generation_agent = std::make_unique<PasswordGenerationAgent>( render_frame, password_autofill_agent.get(), associated_interfaces); - new AutofillAgent( - render_frame, - {ExtractAllDatalists(false), FocusRequiresScroll(true), - QueryPasswordSuggestions(false), SecureContextRequired(false), - UserGestureRequired(true), - UsesKeyboardAccessoryForSuggestions(BUILDFLAG(IS_ANDROID))}, - std::move(password_autofill_agent), - std::move(password_generation_agent), associated_interfaces); + new AutofillAgent(render_frame, std::move(password_autofill_agent), + std::move(password_generation_agent), + associated_interfaces); } if (content_capture::features::IsContentCaptureEnabled()) {
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 3fa8b38a..5e5e74b 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -3279,6 +3279,7 @@ "../browser/ui/views/hats/hats_browsertest.cc", "../browser/ui/views/incognito_clear_browsing_data_dialog_browsertest.cc", "../browser/ui/views/intent_picker_dialog_browsertest.cc", + "../browser/ui/views/passwords/password_change/password_change_ui_browsertest.cc", "../browser/ui/views/privacy_sandbox/privacy_sandbox_dialog_view_browsertest.cc", "../browser/ui/views/profiles/avatar_toolbar_button_browsertest.cc", "../browser/ui/views/promos/ios_promo_bubble_browsertest.cc", @@ -3415,7 +3416,10 @@ "v8/wasm_trap_handler_browsertest.cc", ] - public_deps = [ "//chrome/browser/ui/tabs:tab_strip" ] + public_deps = [ + "//chrome/browser/ui/tabs:tab_strip", + "//chrome/test/supervised_user:live_tests", + ] if (is_android) { sources += [ "../browser/dom_distiller/tab_utils_browsertest.cc" ] @@ -4315,6 +4319,8 @@ "../browser/user_bypass/user_bypass_web_contents_observer_browsertest.cc", ] + public_deps += [ "//chrome/test/supervised_user:live_tests" ] + data += [ "//chrome/test/data/controlled_frame/resources/expected_properties.json", "//chrome/test/data/controlled_frame/resources/mangle.js", @@ -10784,6 +10790,7 @@ "//chrome/renderer", "//chrome/test/media_router:browser_tests", "//chrome/test/media_router/access_code_cast:access_code_cast_integration_base", + "//chrome/test/supervised_user:live_tests", "//chrome/test/supervised_user:test_support", "//components/accessibility:reading", "//components/autofill/content/browser:test_support",
diff --git a/chrome/test/base/chrome_render_view_test.cc b/chrome/test/base/chrome_render_view_test.cc index de65717..989dc1ca 100644 --- a/chrome/test/base/chrome_render_view_test.cc +++ b/chrome/test/base/chrome_render_view_test.cc
@@ -85,7 +85,7 @@ &associated_interfaces_); password_generation_ = unique_password_generation.get(); autofill_agent_ = new AutofillAgent( - GetMainRenderFrame(), {}, std::move(unique_password_autofill_agent), + GetMainRenderFrame(), std::move(unique_password_autofill_agent), std::move(unique_password_generation), &associated_interfaces_); }
diff --git a/chrome/test/data/webui/chromeos/settings/test_os_sync_browser_proxy.ts b/chrome/test/data/webui/chromeos/settings/test_os_sync_browser_proxy.ts index d83d5ca..38ad0c0 100644 --- a/chrome/test/data/webui/chromeos/settings/test_os_sync_browser_proxy.ts +++ b/chrome/test/data/webui/chromeos/settings/test_os_sync_browser_proxy.ts
@@ -148,4 +148,6 @@ openActivityControlsUrl(): void {} startKeyRetrieval(): void {} + + showSyncPassphraseDialog(): void {} }
diff --git a/chrome/test/data/webui/settings/autofill_section_test.ts b/chrome/test/data/webui/settings/autofill_section_test.ts index b3ac0a1..3ed2dd4 100644 --- a/chrome/test/data/webui/settings/autofill_section_test.ts +++ b/chrome/test/data/webui/settings/autofill_section_test.ts
@@ -275,10 +275,6 @@ }); test('verifyAddressLocalIndication', async () => { - loadTimeData.overrideValues({ - syncEnableContactInfoDataTypeInTransportMode: false, - }); - const autofillManager = new TestAutofillManager(); autofillManager.data.addresses = [createAddressEntry()]; autofillManager.data.accountInfo = { @@ -302,21 +298,12 @@ const changeListener = autofillManager.lastCallback.setPersonalDataManagerListener!; - changeListener(autofillManager.data.addresses, [], [], STUB_USER_ACCOUNT_INFO); - assertFalse( - isVisible(addressList.children[0]!.querySelector('[icon*=cloud-off]')), - 'Sync is disabled but the feature is off, the icon should be hidden.'); - changeListener(autofillManager.data.addresses, [], [], undefined); assertFalse( isVisible(section.$.addressList.children[0]!.querySelector( '[icon*=cloud-off]')), 'The local indicator should not be shown to logged-out users'); - - loadTimeData.overrideValues({ - syncEnableContactInfoDataTypeInTransportMode: true, - }); changeListener( autofillManager.data.addresses, [], [], STUB_USER_ACCOUNT_INFO); assertTrue(
diff --git a/chrome/test/data/webui/settings/sync_account_control_test.ts b/chrome/test/data/webui/settings/sync_account_control_test.ts index 803cb51..e0ee8379 100644 --- a/chrome/test/data/webui/settings/sync_account_control_test.ts +++ b/chrome/test/data/webui/settings/sync_account_control_test.ts
@@ -376,6 +376,32 @@ assertTrue(isChildVisible(testElement, '#turn-off')); }); + + test( + 'signed in, has passphrase error, with kImprovedSettingsUIOnDesktopEnabled enabled', + function() { + loadTimeData.overrideValues( + {isImprovedSettingsUIOnDesktopEnabled: true}); + + testElement.syncStatus = { + firstSetupInProgress: false, + signedInState: SignedInState.SIGNED_IN, + hasError: true, + statusAction: StatusAction.ENTER_PASSPHRASE, + statusText: 'error text', + disabled: false, + }; + flush(); + + assertTrue(testElement.shadowRoot! + .querySelector<HTMLElement>('#sync-icon-container')! + .classList.contains('sync-problem')); + assertTrue(!!testElement.shadowRoot!.querySelector( + '[icon="settings:sync-problem"]')); + assertTrue(isChildVisible(testElement, '#sync-error-button')); + assertTrue(isChildVisible(testElement, '#turn-off')); + }); + test( 'signed in, has error with kImprovedSettingsUIOnDesktopEnabled disabled', function() {
diff --git a/chrome/test/data/webui/settings/test_sync_browser_proxy.ts b/chrome/test/data/webui/settings/test_sync_browser_proxy.ts index b856e009..74a3b72e 100644 --- a/chrome/test/data/webui/settings/test_sync_browser_proxy.ts +++ b/chrome/test/data/webui/settings/test_sync_browser_proxy.ts
@@ -163,6 +163,8 @@ startKeyRetrieval() {} + showSyncPassphraseDialog() {} + // <if expr="chromeos_ash"> attemptUserExit() {}
diff --git a/chrome/test/supervised_user/BUILD.gn b/chrome/test/supervised_user/BUILD.gn index 3f77f69..29140ee2 100644 --- a/chrome/test/supervised_user/BUILD.gn +++ b/chrome/test/supervised_user/BUILD.gn
@@ -9,22 +9,15 @@ "api_mock_setup_mixin.h", "embedded_test_server_setup_mixin.cc", "embedded_test_server_setup_mixin.h", - "family_live_test.cc", - "family_live_test.h", - "family_member.cc", - "family_member.h", "google_auth_state_waiter_mixin.cc", "google_auth_state_waiter_mixin.h", "supervision_mixin.cc", "supervision_mixin.h", ] - deps = [ "//chrome/browser/content_settings:content_settings_factory" ] - public_deps = [ ":child_accounts", "//base", - "//chrome/browser/signin/e2e_tests:test_support", "//chrome/test:sync_integration_test_support", "//chrome/test:test_support", "//components/signin/public/identity_manager:test_support", @@ -43,5 +36,25 @@ "//base", "//net:test_support", "//services/network/public/cpp:cpp", - ] + ] +} + +# Defines sources and dependencies for the Desktop-oriented live tests. +source_set("live_tests") { + testonly = true + sources = [ + "browser_user.cc", + "browser_user.h", + "family_live_test.cc", + "family_live_test.h", + ] + public_deps = [ + ":test_support", + "//base", + "//chrome/browser/content_settings:content_settings_factory", + "//chrome/browser/profiles:profile", + "//chrome/browser/signin/e2e_tests:test_support", + "//components/supervised_user/core/browser/proto", + "//components/supervised_user/test_support:account_repository", + ] }
diff --git a/chrome/test/supervised_user/family_member.cc b/chrome/test/supervised_user/browser_user.cc similarity index 77% rename from chrome/test/supervised_user/family_member.cc rename to chrome/test/supervised_user/browser_user.cc index a687eb37..58684e6 100644 --- a/chrome/test/supervised_user/family_member.cc +++ b/chrome/test/supervised_user/browser_user.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/test/supervised_user/family_member.h" +#include "chrome/test/supervised_user/browser_user.h" #include <string_view> @@ -18,6 +18,7 @@ #include "components/signin/public/identity_manager/test_accounts.h" #include "components/supervised_user/core/browser/family_link_user_capabilities.h" #include "components/supervised_user/core/browser/supervised_user_service.h" +#include "components/supervised_user/test_support/account_repository.h" #include "components/supervised_user/test_support/family_link_settings_state_management.h" #include "google_apis/gaia/core_account_id.h" #include "services/network/public/cpp/shared_url_loader_factory.h" @@ -26,15 +27,15 @@ namespace supervised_user { -FamilyMember::FamilyMember( - signin::TestAccountSigninCredentials credentials, +BrowserUser::BrowserUser( + test_accounts::FamilyMember credentials, scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, signin::IdentityManager& identity_manager, Browser& browser, Profile& profile, const base::RepeatingCallback<bool(int, const GURL&, ui::PageTransition)> add_tab_function) - : account_(credentials), + : credentials_(credentials), url_loader_factory_(url_loader_factory), identity_manager_(identity_manager), browser_(browser), @@ -42,17 +43,18 @@ sign_in_functions_(base::BindLambdaForTesting( [&browser]() -> Browser* { return &browser; }), add_tab_function) {} -FamilyMember::~FamilyMember() = default; +BrowserUser::~BrowserUser() = default; -void FamilyMember::TurnOnSync() { - sign_in_functions_.TurnOnSync(account_, 0); +void BrowserUser::TurnOnSync() { + sign_in_functions_.TurnOnSync({credentials_.username, credentials_.password}, + 0); } -void FamilyMember::SignOutFromWeb() { +void BrowserUser::SignOutFromWeb() { sign_in_functions_.SignOutFromWeb(); } -FamilyLinkSettingsState::Services FamilyMember::GetServices() const { +FamilyLinkSettingsState::Services BrowserUser::GetServices() const { return { *SupervisedUserServiceFactory::GetForProfile(&profile_.get()), *profile_->GetPrefs(), @@ -60,19 +62,19 @@ }; } -CoreAccountId FamilyMember::GetAccountId() const { +CoreAccountId BrowserUser::GetAccountId() const { CHECK(supervised_user::IsPrimaryAccountSubjectToParentalControls( &identity_manager_.get()) == signin::Tribool::kTrue) << "Blocklist control page is only available to user who have that " "feature enabled. Check if member is a subject to parental controls. " "Account: " - << account_.user; + << credentials_.username; return identity_manager_->GetPrimaryAccountId(signin::ConsentLevel::kSignin); } -std::string_view FamilyMember::GetAccountPassword() const { - return account_.password; +std::string_view BrowserUser::GetAccountPassword() const { + return credentials_.password; } } // namespace supervised_user
diff --git a/chrome/test/supervised_user/family_member.h b/chrome/test/supervised_user/browser_user.h similarity index 69% rename from chrome/test/supervised_user/family_member.h rename to chrome/test/supervised_user/browser_user.h index 0ddaa0c..35cf843 100644 --- a/chrome/test/supervised_user/family_member.h +++ b/chrome/test/supervised_user/browser_user.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_TEST_SUPERVISED_USER_FAMILY_MEMBER_H_ -#define CHROME_TEST_SUPERVISED_USER_FAMILY_MEMBER_H_ +#ifndef CHROME_TEST_SUPERVISED_USER_BROWSER_USER_H_ +#define CHROME_TEST_SUPERVISED_USER_BROWSER_USER_H_ #include <string_view> @@ -14,26 +14,27 @@ #include "chrome/browser/signin/e2e_tests/signin_util.h" #include "components/signin/public/identity_manager/identity_manager.h" #include "components/signin/public/identity_manager/test_accounts.h" +#include "components/supervised_user/test_support/account_repository.h" #include "components/supervised_user/test_support/family_link_settings_state_management.h" #include "ui/base/page_transition_types.h" #include "url/gurl.h" namespace supervised_user { -// Family member's actions that can be taken in browser UI. -class FamilyMember { +// Represents the user of the browser, who is typically a family member: a +// parent or a child. +class BrowserUser { public: using NewTabCallback = base::RepeatingCallback<bool(int, const GURL&, ui::PageTransition)>; - FamilyMember( - signin::TestAccountSigninCredentials credentials, - scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, - signin::IdentityManager& identity_manager, - Browser& browser, - Profile& profile, - const NewTabCallback add_tab_function); - ~FamilyMember(); + BrowserUser(test_accounts::FamilyMember credentials, + scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, + signin::IdentityManager& identity_manager, + Browser& browser, + Profile& profile, + const NewTabCallback add_tab_function); + ~BrowserUser(); void TurnOnSync(); void SignOutFromWeb(); @@ -55,7 +56,7 @@ Profile& profile() const { return profile_.get(); } private: - signin::TestAccountSigninCredentials account_; + const test_accounts::FamilyMember credentials_; scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_; raw_ref<signin::IdentityManager> identity_manager_; raw_ref<Browser> browser_; @@ -65,4 +66,4 @@ }; } // namespace supervised_user -#endif // CHROME_TEST_SUPERVISED_USER_FAMILY_MEMBER_H_ +#endif // CHROME_TEST_SUPERVISED_USER_BROWSER_USER_H_
diff --git a/chrome/test/supervised_user/family_live_test.cc b/chrome/test/supervised_user/family_live_test.cc index 990eb71..a4aa2e2 100644 --- a/chrome/test/supervised_user/family_live_test.cc +++ b/chrome/test/supervised_user/family_live_test.cc
@@ -23,8 +23,10 @@ #include "chrome/browser/sync/test/integration/invalidations/invalidations_status_checker.h" #include "chrome/browser/sync/test/integration/single_client_status_change_checker.h" #include "chrome/browser/ui/browser.h" -#include "chrome/test/supervised_user/family_member.h" +#include "chrome/test/supervised_user/browser_user.h" #include "components/signin/public/identity_manager/test_accounts.h" +#include "components/supervised_user/core/browser/proto/kidsmanagement_messages.pb.h" +#include "components/supervised_user/test_support/account_repository.h" #include "components/supervised_user/test_support/family_link_settings_state_management.h" #include "content/public/browser/storage_partition.h" #include "google_apis/gaia/google_service_auth_error.h" @@ -47,12 +49,6 @@ return base::CommandLine::ForCurrentProcess()->HasSwitch(flag); } -// List of accounts specified in -// chrome/browser/internal/resources/signin/test_accounts.json. -static constexpr std::string_view kHeadOfHouseholdAccountIdSuffix{ - "HEAD_OF_HOUSEHOLD"}; -static constexpr std::string_view kChildAccountIdSuffix{"CHILD_1"}; - Profile& CreateNewProfile() { ProfileManager* profile_manager = g_browser_process->profile_manager(); base::FilePath profile_path = @@ -60,23 +56,6 @@ return profiles::testing::CreateProfileSync(profile_manager, profile_path); } -std::string GetFamilyIdentifier() { - const base::CommandLine* const cmd = base::CommandLine::ForCurrentProcess(); - if (cmd->HasSwitch(kFamilyIdentifierLegacySwitch)) { - return cmd->GetSwitchValueASCII(kFamilyIdentifierLegacySwitch); - } - if (cmd->HasSwitch(kFamilyIdentifierSwitch)) { - return cmd->GetSwitchValueASCII(kFamilyIdentifierSwitch); - } - - NOTREACHED() << "Please specify " << kFamilyIdentifierSwitch << " or " - << kFamilyIdentifierLegacySwitch << " switch"; -} - -std::string GetFamilyMemberIdentifier(std::string_view member_identifier) { - return GetFamilyIdentifier() + "_" + std::string(member_identifier); -} - bool HasAuthError(syncer::SyncServiceImpl* service) { return service->GetAuthError().state() == GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS || @@ -108,14 +87,25 @@ } }; -signin::TestAccountSigninCredentials CreateTestAccountFromCredentialsSwitch( +test_accounts::FamilyMember CreateTestAccountFromCredentialsSwitch( std::string_view credentials_switch) { std::string credentials = base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( credentials_switch); + test_accounts::FamilyMember member; + + if (credentials_switch == kHeadOfHouseholdCredentialsSwitch) { + member.role = kidsmanagement::FamilyRole::HEAD_OF_HOUSEHOLD; + } else if (credentials_switch == kChildCredentialsSwitch) { + member.role = kidsmanagement::FamilyRole::CHILD; + } else { + NOTREACHED() << "Unknown credentials switch: " << credentials_switch; + } + std::string username, password; - if (RE2::FullMatch(credentials, "(.*):(.*)", &username, &password)) { - return {username, password}; + if (RE2::FullMatch(credentials, "(.*):(.*)", &member.username, + &member.password)) { + return member; } NOTREACHED() << "Expected username:password format, but got: " << credentials; @@ -129,18 +119,18 @@ : extra_enabled_hosts_(extra_enabled_hosts), rpc_mode_(rpc_mode) {} FamilyLiveTest::~FamilyLiveTest() = default; -FamilyMember& FamilyLiveTest::head_of_household() const { +BrowserUser& FamilyLiveTest::head_of_household() const { CHECK(head_of_household_) << "No head of household found for given family or credentials"; return *head_of_household_; } -FamilyMember& FamilyLiveTest::child() const { +BrowserUser& FamilyLiveTest::child() const { CHECK(child_) << "No child found for given family or credentials"; return *child_; } -FamilyMember& FamilyLiveTest::rpc_issuer() const { +BrowserUser& FamilyLiveTest::rpc_issuer() const { switch (rpc_mode_) { case RpcMode::kProd: return head_of_household(); @@ -155,15 +145,15 @@ TurnOnSyncFor(*child_); } -void FamilyLiveTest::TurnOnSyncFor(FamilyMember& member) { - member.TurnOnSync(); - member.browser().tab_strip_model()->CloseWebContentsAt( +void FamilyLiveTest::TurnOnSyncFor(BrowserUser& browser_user) { + browser_user.TurnOnSync(); + browser_user.browser().tab_strip_model()->CloseWebContentsAt( 2, TabCloseTypes::CLOSE_CREATE_HISTORICAL_TAB); - member.browser().tab_strip_model()->CloseWebContentsAt( + browser_user.browser().tab_strip_model()->CloseWebContentsAt( 1, TabCloseTypes::CLOSE_CREATE_HISTORICAL_TAB); if (IsSwitchEnabled(kDebugSwitch)) { - CHECK(AddTabAtIndexToBrowser(&member.browser(), 1, + CHECK(AddTabAtIndexToBrowser(&browser_user.browser(), 1, GURL("chrome://sync-internals"), ui::PAGE_TRANSITION_AUTO_TOPLEVEL)); } @@ -173,7 +163,7 @@ LOG(INFO) << "Waiting for sync service to set up invalidations."; syncer::SyncServiceImpl* service = SyncServiceFactory::GetAsSyncServiceImplForProfileForTesting( - &member.profile()); + &browser_user.profile()); service->SetInvalidationsForSessionsEnabled(true); CHECK(SyncSetupChecker(service).Wait()) << "SyncSetupChecker timed out."; CHECK(InvalidationsStatusChecker(service, /*expected_status=*/true).Wait()) @@ -192,17 +182,42 @@ void FamilyLiveTest::SetUpOnMainThread() { signin::test::LiveTest::SetUpOnMainThread(); - if (IsSwitchEnabled(kFamilyIdentifierSwitch)) { + if (IsSwitchEnabled(kFamilyFeatureIdentifierSwitch) && + IsSwitchEnabled(kAccountRepositoryPath)) { // Family from static test_accounts file mode CHECK(!IsSwitchEnabled(kHeadOfHouseholdCredentialsSwitch)) << "Head of household credentials are ignored if " - << kFamilyIdentifierSwitch << " is set"; + << kFamilyFeatureIdentifierSwitch << " and " << kAccountRepositoryPath + << " are set"; CHECK(!IsSwitchEnabled(kChildCredentialsSwitch)) - << "Child credentials are ignored if " << kFamilyIdentifierSwitch - << " is set"; + << "Child credentials are ignored if " << kFamilyFeatureIdentifierSwitch + << " and " << kAccountRepositoryPath << " are set"; - SetHeadOfHousehold(GetAccountFromFile(kHeadOfHouseholdAccountIdSuffix)); - SetChild(GetAccountFromFile(kChildAccountIdSuffix)); + std::optional<test_accounts::Feature> family_feature = + test_accounts::ParseFeature( + base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( + kFamilyFeatureIdentifierSwitch)); + CHECK(family_feature.has_value()) << "Unrecognized family feature"; + + TestAccountRepository repository( + base::CommandLine::ForCurrentProcess()->GetSwitchValuePath( + kAccountRepositoryPath)); + + std::optional<test_accounts::Family> family = + repository.GetRandomFamilyByFeature(*family_feature); + CHECK(family_feature.has_value()) + << "Family with requested feature not available"; + + std::optional<test_accounts::FamilyMember> head_of_household = + GetFirstFamilyMemberByRole( + *family, kidsmanagement::FamilyRole::HEAD_OF_HOUSEHOLD); + CHECK(head_of_household.has_value()) << "Head of household not available"; + SetHeadOfHousehold(*head_of_household); + + std::optional<test_accounts::FamilyMember> child = + GetFirstFamilyMemberByRole(*family, kidsmanagement::FamilyRole::CHILD); + CHECK(child.has_value()) << "Child not available"; + SetChild(*child); return; } @@ -214,8 +229,8 @@ return; } - NOTREACHED() << "Either specify " << kFamilyIdentifierSwitch - << " or configure credentials using " + NOTREACHED() << "Either specify " << kFamilyFeatureIdentifierSwitch << " and " + << kAccountRepositoryPath << " or configure credentials using " << kHeadOfHouseholdCredentialsSwitch << " and " << kChildCredentialsSwitch << "."; } @@ -226,13 +241,12 @@ } void FamilyLiveTest::SetHeadOfHousehold( - const signin::TestAccountSigninCredentials& account) { - head_of_household_ = MakeSignedInBrowser(account); + const test_accounts::FamilyMember& credentials) { + head_of_household_ = MakeSignedInBrowser(credentials); } -void FamilyLiveTest::SetChild( - const signin::TestAccountSigninCredentials& account) { - child_ = MakeSignedInBrowser(account); +void FamilyLiveTest::SetChild(const test_accounts::FamilyMember& credentials) { + child_ = MakeSignedInBrowser(credentials); } void FamilyLiveTest::SetUpInProcessBrowserTestFixture() { @@ -243,30 +257,21 @@ } } -signin::TestAccountSigninCredentials FamilyLiveTest::GetAccountFromFile( - std::string_view account_name_suffix) const { - std::optional<signin::TestAccountSigninCredentials> account = - GetTestAccounts()->GetAccount( - GetFamilyMemberIdentifier(account_name_suffix)); - CHECK(account.has_value()); - return *account; -} - -std::unique_ptr<FamilyMember> FamilyLiveTest::MakeSignedInBrowser( - const signin::TestAccountSigninCredentials& account) { +std::unique_ptr<BrowserUser> FamilyLiveTest::MakeSignedInBrowser( + const test_accounts::FamilyMember& credentials) { // Managed externally to the test fixture. Profile& profile = CreateNewProfile(); Browser* browser = CreateBrowser(&profile); CHECK(browser) << "Expected to create a browser."; - FamilyMember::NewTabCallback new_tab_callback = base::BindLambdaForTesting( + BrowserUser::NewTabCallback new_tab_callback = base::BindLambdaForTesting( [this, browser](int index, const GURL& url, ui::PageTransition transition) -> bool { return this->AddTabAtIndexToBrowser(browser, index, url, transition); }); - return std::make_unique<FamilyMember>( - account, + return std::make_unique<BrowserUser>( + credentials, profile.GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(), *IdentityManagerFactory::GetForProfile(&profile), *browser, profile, @@ -295,7 +300,7 @@ ui::test::internal::InteractiveTestPrivate::MultiStep InteractiveFamilyLiveTest::WaitForStateSeeding( ui::test::StateIdentifier<InIntendedStateObserver> id, - const FamilyMember& browser_user, + const BrowserUser& browser_user, const FamilyLinkSettingsState& state) { return Steps( Log(base::StrCat({"WaitForState[", state.ToString(), "]: start"})),
diff --git a/chrome/test/supervised_user/family_live_test.h b/chrome/test/supervised_user/family_live_test.h index 14dd7b9..77a15b5 100644 --- a/chrome/test/supervised_user/family_live_test.h +++ b/chrome/test/supervised_user/family_live_test.h
@@ -12,7 +12,7 @@ #include "chrome/browser/signin/e2e_tests/live_test.h" #include "chrome/browser/signin/e2e_tests/signin_util.h" #include "chrome/test/interaction/interactive_browser_test.h" -#include "chrome/test/supervised_user/family_member.h" +#include "chrome/test/supervised_user/browser_user.h" #include "components/signin/public/identity_manager/test_accounts.h" #include "components/supervised_user/test_support/family_link_settings_state_management.h" #include "ui/base/interaction/interaction_sequence.h" @@ -23,11 +23,10 @@ namespace supervised_user { // Refers to the family prefix in resources/signin/test_accounts.json -const char* const kFamilyIdentifierSwitch = +const char* const kAccountRepositoryPath = + "supervised-tests-account-repository-path"; +const char* const kFamilyFeatureIdentifierSwitch = "supervised-tests-family-identifier"; -// Legacy version of the above -const char* const kFamilyIdentifierLegacySwitch = - "supervised-tests-family-legacy-identifier"; // Alternatively, use these two to provide head of household's and child's // credentials directly, in <username>:<password> syntax (colon separated). @@ -69,7 +68,7 @@ // Turns on sync and waits for the sync subsystem to start. Manages the list // of open service tabs. - void TurnOnSyncFor(FamilyMember& member); + void TurnOnSyncFor(BrowserUser& browser_user); protected: void SetUp() override; @@ -82,30 +81,31 @@ GURL GetRoutedUrl(std::string_view url_spec) const; // Members of the family. - FamilyMember& head_of_household() const; - FamilyMember& child() const; + BrowserUser& head_of_household() const; + BrowserUser& child() const; // Family member that will issue rpc. - FamilyMember& rpc_issuer() const; + BrowserUser& rpc_issuer() const; private: // Creates a FamilyMember entity using credentials from TestAccount. - void SetHeadOfHousehold(const signin::TestAccountSigninCredentials& account); - void SetChild(const signin::TestAccountSigninCredentials& account); + void SetHeadOfHousehold(const test_accounts::FamilyMember& credentials); + void SetChild(const test_accounts::FamilyMember& credentials); // Extracts requested account from test_accounts.json file, which must exist. signin::TestAccountSigninCredentials GetAccountFromFile( std::string_view account_name_suffix) const; - // Creates a new browser signed in to the specified account - std::unique_ptr<FamilyMember> MakeSignedInBrowser( - const signin::TestAccountSigninCredentials& account); + // Creates a new browser signed in to the specified account credentials that + // represent a family member. + std::unique_ptr<BrowserUser> MakeSignedInBrowser( + const test_accounts::FamilyMember& credentials); // Empty, if rpc_mode_ is kImpersonation. - std::unique_ptr<FamilyMember> head_of_household_; + std::unique_ptr<BrowserUser> head_of_household_; // Subject of testing. - std::unique_ptr<FamilyMember> child_; + std::unique_ptr<BrowserUser> child_; // List of additional hosts that will have host resolution enabled. Host // resolution is configured as part of test startup. @@ -133,7 +133,7 @@ // After completion, supervised user settings are in `state`. ui::test::internal::InteractiveTestPrivate::MultiStep WaitForStateSeeding( ui::test::StateIdentifier<InIntendedStateObserver> id, - const FamilyMember& browser_user, + const BrowserUser& browser_user, const FamilyLinkSettingsState& state_manager); };
diff --git a/chromeos/profiles/arm.afdo.newest.txt b/chromeos/profiles/arm.afdo.newest.txt index e0b76cc..776344f 100644 --- a/chromeos/profiles/arm.afdo.newest.txt +++ b/chromeos/profiles/arm.afdo.newest.txt
@@ -1 +1 @@ -chromeos-chrome-arm-none-133-6834.21-1733110640-benchmark-133.0.6876.0-r1-redacted.afdo.xz +chromeos-chrome-arm-none-133-6918.0-1736133807-benchmark-134.0.6944.0-r3-redacted.afdo.xz
diff --git a/chromeos/profiles/atom.afdo.newest.txt b/chromeos/profiles/atom.afdo.newest.txt index ba44d48..1d07a3e 100644 --- a/chromeos/profiles/atom.afdo.newest.txt +++ b/chromeos/profiles/atom.afdo.newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-atom-133-6834.21-1733108845-benchmark-133.0.6873.0-r2-redacted.afdo.xz +chromeos-chrome-amd64-atom-133-6932.0-1736133194-benchmark-134.0.6944.0-r3-redacted.afdo.xz
diff --git a/chromeos/profiles/bigcore.afdo.newest.txt b/chromeos/profiles/bigcore.afdo.newest.txt index 2ef33f57..22b81f5 100644 --- a/chromeos/profiles/bigcore.afdo.newest.txt +++ b/chromeos/profiles/bigcore.afdo.newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-bigcore-133-6834.21-1733107048-benchmark-133.0.6873.0-r2-redacted.afdo.xz +chromeos-chrome-amd64-bigcore-133-6918.0-1736137475-benchmark-134.0.6944.0-r3-redacted.afdo.xz
diff --git a/chromeos/strings/chromeos_strings_bn.xtb b/chromeos/strings/chromeos_strings_bn.xtb index 4a9934a..458cd7eef 100644 --- a/chromeos/strings/chromeos_strings_bn.xtb +++ b/chromeos/strings/chromeos_strings_bn.xtb
@@ -1317,6 +1317,7 @@ <translation id="7182063559013288142">ইনস্ট্যান্ট হটস্পট</translation> <translation id="7184043045742675738">আপনার বোতামটি কাস্টমাইজ করতে, যেকোনও 'কী'-এর উপরে ক্লিক করুন। মাউস বা তীরচিহ্নযুক্ত 'কী'-এর সাহায্যে 'কী' অন্য জায়গায় সরান।</translation> <translation id="7187669805838282391">বুধবারে</translation> +<translation id="7205318498545665455">আপনার মাইক্রোফোন বেছে নিন</translation> <translation id="7206979415662233817">পরিষেবার শর্তাবলী</translation> <translation id="7210635925306941239">সায়ান</translation> <translation id="7212547870105584639">নেটওয়ার্কের APN সেটিংস ম্যানেজ করুন। APN মোবাইল নেটওয়ার্ক এবং ইন্টারনেটের মধ্যে কানেকশন তৈরি করে। <ph name="BEGIN_LINK_LEARN_MORE" />আরও জানুন<ph name="END_LINK_LEARN_MORE" /></translation>
diff --git a/chromeos/strings/chromeos_strings_ka.xtb b/chromeos/strings/chromeos_strings_ka.xtb index c284ed23..514a9b4 100644 --- a/chromeos/strings/chromeos_strings_ka.xtb +++ b/chromeos/strings/chromeos_strings_ka.xtb
@@ -1317,6 +1317,7 @@ <translation id="7182063559013288142">მყისიერი უსადენო ქსელი</translation> <translation id="7184043045742675738">ღილაკის მოსარგებად დააწკაპუნეთ ნებისმიერ კლავიშზე. კლავიშის გადაადგილება შეგიძლიათ მაუსის ან ისრიანი კლავიშების მეშვეობით.</translation> <translation id="7187669805838282391">ოთხშაბათს</translation> +<translation id="7205318498545665455">აირჩიეთ თქვენი მიკროფონი</translation> <translation id="7206979415662233817">მომსახურების პირობები</translation> <translation id="7210635925306941239">ციანი</translation> <translation id="7212547870105584639">მართეთ ქსელის APN-ის პარამეტრები. APN ამყარებს კავშირს ფიჭურ ქსელსა და ინტერნეტს შორის. <ph name="BEGIN_LINK_LEARN_MORE" />შეიტყვეთ მეტი<ph name="END_LINK_LEARN_MORE" /></translation>
diff --git a/chromeos/strings/chromeos_strings_ml.xtb b/chromeos/strings/chromeos_strings_ml.xtb index 49f339f..89e74d9e 100644 --- a/chromeos/strings/chromeos_strings_ml.xtb +++ b/chromeos/strings/chromeos_strings_ml.xtb
@@ -1317,6 +1317,7 @@ <translation id="7182063559013288142">തൽക്ഷണ ഹോട്ട്സ്പോട്ട്</translation> <translation id="7184043045742675738">നിങ്ങളുടെ ബട്ടൺ ഇഷ്ടാനുസൃതമാക്കാൻ ഏതെങ്കിലും കീയിൽ ക്ലിക്ക് ചെയ്യുക. മൗസ് അല്ലെങ്കിൽ അമ്പടയാള കീകൾ ഉപയോഗിച്ച് കീയുടെ സ്ഥാനം മാറ്റുക.</translation> <translation id="7187669805838282391">ബുധനാഴ്ച</translation> +<translation id="7205318498545665455">നിങ്ങളുടെ മൈക്ക് തിരഞ്ഞെടുക്കുക</translation> <translation id="7206979415662233817">സേവന നിബന്ധനകൾ</translation> <translation id="7210635925306941239">സിയാൻ</translation> <translation id="7212547870105584639">നെറ്റ്വർക്ക് APN ക്രമീകരണം മാനേജ് ചെയ്യുക. സെല്ലുലാർ നെറ്റ്വർക്കിനും ഇന്റർനെറ്റിനും ഇടയിൽ APN-കൾ കണക്ഷൻ സ്ഥാപിക്കുന്നു. <ph name="BEGIN_LINK_LEARN_MORE" />കൂടുതലറിയുക<ph name="END_LINK_LEARN_MORE" /></translation>
diff --git a/chromeos/strings/chromeos_strings_ms.xtb b/chromeos/strings/chromeos_strings_ms.xtb index f2a0008af..145b110 100644 --- a/chromeos/strings/chromeos_strings_ms.xtb +++ b/chromeos/strings/chromeos_strings_ms.xtb
@@ -1317,6 +1317,7 @@ <translation id="7182063559013288142">Tempat liputan segera</translation> <translation id="7184043045742675738">Klik sebarang kekunci untuk menyesuaikan butang anda. Ubah kedudukan kekunci dengan tetikus atau kekunci anak panah.</translation> <translation id="7187669805838282391">pada hari Rabu</translation> +<translation id="7205318498545665455">Pilih mikrofon anda</translation> <translation id="7206979415662233817">Syarat perkhidmatan</translation> <translation id="7210635925306941239">sian</translation> <translation id="7212547870105584639">Urus tetapan APN rangkaian. APN mewujudkan sambungan antara rangkaian selular dengan Internet. <ph name="BEGIN_LINK_LEARN_MORE" />Ketahui lebih lanjut<ph name="END_LINK_LEARN_MORE" /></translation>
diff --git a/chromeos/strings/chromeos_strings_or.xtb b/chromeos/strings/chromeos_strings_or.xtb index b96cae8..2361bb97 100644 --- a/chromeos/strings/chromeos_strings_or.xtb +++ b/chromeos/strings/chromeos_strings_or.xtb
@@ -1179,7 +1179,7 @@ <translation id="6595046262780525922">ଟ୍ରାନ୍ସକ୍ରିପସନକୁ ଚାଲୁ କରି ଟ୍ରାନ୍ସକ୍ରିପସନ ମଡେଲ ଡାଉନଲୋଡ କରିବେ?</translation> <translation id="6596816719288285829">IP ଠିକଣା</translation> <translation id="6599673642868607614">ଆପଣଙ୍କ ମତାମତ ପାଇଁ ଧନ୍ୟବାଦ। Chromebook ଅନୁଭୂତିକୁ ଉନ୍ନତ କରିବାରେ ଆପଣଙ୍କ ମତାମତ ଆମକୁ ସାହାଯ୍ୟ କରେ ଏବଂ ଏହାକୁ ଆମ ଟିମ ଦ୍ୱାରା ସମୀକ୍ଷା କରାଯିବ। ବହୁ ସଂଖ୍ୟକ ରିପୋର୍ଟ ଯୋଗୁଁ ଆମେ ଏକ ପ୍ରତ୍ୟୁତ୍ତର ପଠାଇବାକୁ ସକ୍ଷମ ହେବୁ ନାହିଁ।</translation> -<translation id="660846213831377756">ମାଉସ କୀଗୁଡ଼ିକ</translation> +<translation id="660846213831377756">ମାଉସ କୀ</translation> <translation id="6618744767048954150">ଚାଲୁଛି</translation> <translation id="6620487321149975369">ପ୍ରିଣ୍ଟ କାର୍ଯ୍ୟଗୁଡ଼ିକୁ ମାନୁଆଲୀ କାଢ଼ି ନଦିଆଯିବା ପର୍ଯ୍ୟନ୍ତ ସେଗୁଡ଼ିକ ଇତିହାସରେ ଦେଖାଯିବ</translation> <translation id="6624819909909965616">10 MBରୁ ବଡ଼ ଫାଇଲ ଅପଲୋଡ କରାଯାଇପାରିବ ନାହିଁ</translation>
diff --git a/chromeos/strings/chromeos_strings_pt-PT.xtb b/chromeos/strings/chromeos_strings_pt-PT.xtb index 2efb33e..7b90283 100644 --- a/chromeos/strings/chromeos_strings_pt-PT.xtb +++ b/chromeos/strings/chromeos_strings_pt-PT.xtb
@@ -1317,6 +1317,7 @@ <translation id="7182063559013288142">Zona Wi-Fi instantânea</translation> <translation id="7184043045742675738">Clique numa tecla para personalizar o botão. Reposicione a tecla com o rato ou as teclas de seta.</translation> <translation id="7187669805838282391">na quarta-feira</translation> +<translation id="7205318498545665455">Escolha o seu microfone</translation> <translation id="7206979415662233817">Termos de Utilização</translation> <translation id="7210635925306941239">ciano</translation> <translation id="7212547870105584639">Faça a gestão das definições do APN da rede. Os APNs estabelecem uma ligação entre uma rede móvel e a Internet. <ph name="BEGIN_LINK_LEARN_MORE" />Saiba mais<ph name="END_LINK_LEARN_MORE" /></translation>
diff --git a/chromeos/strings/chromeos_strings_ru.xtb b/chromeos/strings/chromeos_strings_ru.xtb index 4395c14d..ea5800e6 100644 --- a/chromeos/strings/chromeos_strings_ru.xtb +++ b/chromeos/strings/chromeos_strings_ru.xtb
@@ -1179,7 +1179,7 @@ <translation id="6595046262780525922">Включить расшифровку и скачать модель?</translation> <translation id="6596816719288285829">IP-адрес</translation> <translation id="6599673642868607614">Благодарим за отзыв. Он поможет нам улучшить Chromebook и будет рассмотрен нашей командой. Мы получаем множество обращений, поэтому не сможем вам ответить.</translation> -<translation id="660846213831377756">Кнопки мыши</translation> +<translation id="660846213831377756">Клавиши управления мышью</translation> <translation id="6618744767048954150">Выполняется</translation> <translation id="6620487321149975369">Задания печати показываются в истории до тех пор, пока вы их не удалите</translation> <translation id="6624819909909965616">Невозможно загрузить файл размером больше 10 МБ.</translation>
diff --git a/chromeos/strings/chromeos_strings_sr-Latn.xtb b/chromeos/strings/chromeos_strings_sr-Latn.xtb index ecdd17a..748eb2f 100644 --- a/chromeos/strings/chromeos_strings_sr-Latn.xtb +++ b/chromeos/strings/chromeos_strings_sr-Latn.xtb
@@ -1317,6 +1317,7 @@ <translation id="7182063559013288142">Instant hotspot</translation> <translation id="7184043045742675738">Kliknite na bilo koji taster da biste prilagodili dugme. Promenite položaj tastera pomoću tastera miša ili tastera sa strelicama.</translation> <translation id="7187669805838282391">u sredu</translation> +<translation id="7205318498545665455">Odaberite mikrofon</translation> <translation id="7206979415662233817">Uslovi korišćenja usluge</translation> <translation id="7210635925306941239">cijan</translation> <translation id="7212547870105584639">Upravljajte podešavanjima naziva pristupne tačke mreže. Nazivi pristupnih tačaka uspostavljaju vezu između mobilne mreže i interneta. <ph name="BEGIN_LINK_LEARN_MORE" />Saznajte više<ph name="END_LINK_LEARN_MORE" /></translation>
diff --git a/chromeos/strings/chromeos_strings_sr.xtb b/chromeos/strings/chromeos_strings_sr.xtb index 49d1717..1b673041f 100644 --- a/chromeos/strings/chromeos_strings_sr.xtb +++ b/chromeos/strings/chromeos_strings_sr.xtb
@@ -1317,6 +1317,7 @@ <translation id="7182063559013288142">Инстант хотспот</translation> <translation id="7184043045742675738">Кликните на било који тастер да бисте прилагодили дугме. Промените положај тастера помоћу тастера миша или тастера са стрелицама.</translation> <translation id="7187669805838282391">у среду</translation> +<translation id="7205318498545665455">Одаберите микрофон</translation> <translation id="7206979415662233817">Услови коришћења услуге</translation> <translation id="7210635925306941239">цијан</translation> <translation id="7212547870105584639">Управљајте подешавањима назива приступне тачке мреже. Називи приступних тачака успостављају везу између мобилне мреже и интернета. <ph name="BEGIN_LINK_LEARN_MORE" />Сазнајте више<ph name="END_LINK_LEARN_MORE" /></translation>
diff --git a/chromeos/strings/chromeos_strings_uz.xtb b/chromeos/strings/chromeos_strings_uz.xtb index d938554..1e0c914 100644 --- a/chromeos/strings/chromeos_strings_uz.xtb +++ b/chromeos/strings/chromeos_strings_uz.xtb
@@ -1317,6 +1317,7 @@ <translation id="7182063559013288142">Tezkor hotspot</translation> <translation id="7184043045742675738">Tugmani sozlash uchun istalgan klaviatura tugmasini bosing. Sichqoncha yoki strelka tugmalari bilan tugma joylashuvini oʻzgartiring</translation> <translation id="7187669805838282391">Chorshanba kuni</translation> +<translation id="7205318498545665455">Mikrofonni tanlang</translation> <translation id="7206979415662233817">Xizmat shartlari</translation> <translation id="7210635925306941239">havorang</translation> <translation id="7212547870105584639">Tarmoq APN sozlamalarini boshqarish. APN sozlamalari mobil tarmoq va internet orasida aloqani taʼminlaydi. <ph name="BEGIN_LINK_LEARN_MORE" />Batafsil<ph name="END_LINK_LEARN_MORE" /></translation>
diff --git a/clank b/clank index 478b2e4..c78bc641 160000 --- a/clank +++ b/clank
@@ -1 +1 @@ -Subproject commit 478b2e4fe2110836384d18ecacc2f5e95fe9a788 +Subproject commit c78bc64124bbc9103a59307e508591bf82cf7eb4
diff --git a/components/BUILD.gn b/components/BUILD.gn index f0551a3..3727278 100644 --- a/components/BUILD.gn +++ b/components/BUILD.gn
@@ -378,11 +378,8 @@ deps += [ "//components/supervised_user/core/browser:unit_tests", "//components/supervised_user/core/common:unit_tests", + "//components/supervised_user/test_support:account_repository_unit_tests", ] - - if (is_ios || is_win || is_linux) { - deps += [ "//components/supervised_user/test_support:account_repository_unit_tests" ] - } } if (build_allocation_stack_trace_recorder) {
diff --git a/components/attribution_reporting/parsing_utils.cc b/components/attribution_reporting/parsing_utils.cc index c0f856dc..1c2c6772 100644 --- a/components/attribution_reporting/parsing_utils.cc +++ b/components/attribution_reporting/parsing_utils.cc
@@ -314,8 +314,9 @@ } } - base::ranges::sort(list); - list.erase(base::ranges::unique(list), list.end()); + std::ranges::sort(list); + auto repeated = std::ranges::unique(list); + list.erase(repeated.begin(), repeated.end()); if (list.size() > max_set_size) { return base::unexpected(StringSetError::kSetTooLong);
diff --git a/components/autofill/content/renderer/autofill_agent.cc b/components/autofill/content/renderer/autofill_agent.cc index 1e40166..b66abae 100644 --- a/components/autofill/content/renderer/autofill_agent.cc +++ b/components/autofill/content/renderer/autofill_agent.cc
@@ -69,6 +69,7 @@ #include "third_party/blink/public/web/web_local_frame.h" #include "third_party/blink/public/web/web_node.h" #include "third_party/blink/public/web/web_range.h" +#include "third_party/blink/public/web/web_view.h" #include "ui/base/l10n/l10n_util.h" #include "ui/events/keycodes/keyboard_codes.h" @@ -382,6 +383,27 @@ return gfx::Rect(); } +AutofillAgent::Config CreateConfig(bool uses_platform_autofill) { + if (uses_platform_autofill) { + return { + AutofillAgent::ExtractAllDatalists(true), + AutofillAgent::FocusRequiresScroll(false), + AutofillAgent::QueryPasswordSuggestions(true), + AutofillAgent::SecureContextRequired(true), + AutofillAgent::UserGestureRequired(false), + AutofillAgent::UsesKeyboardAccessoryForSuggestions(false), + }; + } + return { + AutofillAgent::ExtractAllDatalists(false), + AutofillAgent::FocusRequiresScroll(true), + AutofillAgent::QueryPasswordSuggestions(false), + AutofillAgent::SecureContextRequired(false), + AutofillAgent::UserGestureRequired(true), + AutofillAgent::UsesKeyboardAccessoryForSuggestions(BUILDFLAG(IS_ANDROID)), + }; +} + } // namespace // During prerendering, we do not want the renderer to send messages to the @@ -487,15 +509,16 @@ AutofillAgent::AutofillAgent( content::RenderFrame* render_frame, - Config config, std::unique_ptr<PasswordAutofillAgent> password_autofill_agent, std::unique_ptr<PasswordGenerationAgent> password_generation_agent, blink::AssociatedInterfaceRegistry* registry) : content::RenderFrameObserver(render_frame), - config_(config), + config_(CreateConfig(render_frame->GetWebView() + ->GetRendererPreferences() + .uses_platform_autofill)), password_autofill_agent_(std::move(password_autofill_agent)), password_generation_agent_(std::move(password_generation_agent)) { - form_tracker_->SetUserGestureRequired(config.user_gesture_required); + form_tracker_->SetUserGestureRequired(config_.user_gesture_required); render_frame->GetWebFrame()->SetAutofillClient(this); password_autofill_agent_->Init(this); registry->AddInterface<mojom::AutofillAgent>(base::BindRepeating(
diff --git a/components/autofill/content/renderer/autofill_agent.h b/components/autofill/content/renderer/autofill_agent.h index 10d4875..f4a331d 100644 --- a/components/autofill/content/renderer/autofill_agent.h +++ b/components/autofill/content/renderer/autofill_agent.h
@@ -136,7 +136,6 @@ // are not, then they are also guaranteed to outlive AutofillAgent. AutofillAgent( content::RenderFrame* render_frame, - Config config, std::unique_ptr<PasswordAutofillAgent> password_autofill_agent, std::unique_ptr<PasswordGenerationAgent> password_generation_agent, blink::AssociatedInterfaceRegistry* registry); @@ -460,7 +459,7 @@ } // Stores immutable configuration this agent was created with. It contains - // features and settings that are available for the lifetime of this class. + // features and settings that are specific to the client using this agent. const Config config_; // Return the next web node of `current_node` in the DOM. `next` determines
diff --git a/components/autofill/content/renderer/autofill_agent_browsertest.cc b/components/autofill/content/renderer/autofill_agent_browsertest.cc index 15bc3b15..1281063 100644 --- a/components/autofill/content/renderer/autofill_agent_browsertest.cc +++ b/components/autofill/content/renderer/autofill_agent_browsertest.cc
@@ -44,6 +44,7 @@ #include "third_party/blink/public/web/web_autofill_state.h" #include "third_party/blink/public/web/web_form_control_element.h" #include "third_party/blink/public/web/web_frame_widget.h" +#include "third_party/blink/public/web/web_view.h" namespace autofill { @@ -153,6 +154,13 @@ return Property(&FormFieldData::form_control_type, type); } +void EnablePlatformAutofillForFrame(content::RenderFrame* render_frame) { + blink::RendererPreferences preferences = + render_frame->GetWebView()->GetRendererPreferences(); + preferences.uses_platform_autofill = true; + render_frame->GetWebView()->SetRendererPreferences(preferences); +} + // TODO(crbug.com/41268731): Add many more test cases. class AutofillAgentTest : public test::AutofillRendererTest { public: @@ -1169,12 +1177,11 @@ public: std::unique_ptr<AutofillAgent> CreateAutofillAgent( content::RenderFrame* render_frame, - const AutofillAgent::Config& config, std::unique_ptr<PasswordAutofillAgent> password_autofill_agent, std::unique_ptr<PasswordGenerationAgent> password_generation_agent, blink::AssociatedInterfaceRegistry* associated_interfaces) override { return std::make_unique<MockAutofillAgent>( - render_frame, config, std::move(password_autofill_agent), + render_frame, std::move(password_autofill_agent), std::move(password_generation_agent), associated_interfaces); } @@ -1313,6 +1320,57 @@ FocusedElementChanged(blink::WebElement()); } +// This test fixture initializes the agent to use platform autofill. The agent +// expects the client counterpart to forward requests to the platform instead of +// using an embedder-specific implementation. This behavior matches Android +// Autofill in WebViews and 3P Mode in Chrome. +class AutofillAgentTestUsingPlatformAutofill : public AutofillAgentTest { + public: + std::unique_ptr<AutofillAgent> CreateAutofillAgent( + content::RenderFrame* render_frame, + std::unique_ptr<PasswordAutofillAgent> password_autofill_agent, + std::unique_ptr<PasswordGenerationAgent> password_generation_agent, + blink::AssociatedInterfaceRegistry* associated_interfaces) override { + EnablePlatformAutofillForFrame(render_frame); + return std::make_unique<AutofillAgent>( + render_frame, std::move(password_autofill_agent), + std::move(password_generation_agent), associated_interfaces); + } + + MockAutofillAgent& autofill_agent() { + return static_cast<MockAutofillAgent&>(AutofillAgentTest::autofill_agent()); + } +}; + +// Tests that the agent in 3P mode doesn't fill insecure forms. +TEST_F(AutofillAgentTestUsingPlatformAutofill, InactiveWithoutSecureContext) { + EXPECT_CALL(autofill_driver(), FormsSeen); + LoadHTMLWithUrlOverride("<body><form><input id=ff></form></body>", + "http://example.com"); // Insecure context! + WaitForFormsSeen(); + + EXPECT_CALL(autofill_driver(), AskForValuesToFill).Times(0); + autofill_agent().TriggerSuggestions( + GetFieldRendererIdById("ff"), + AutofillSuggestionTriggerSource::kFormControlElementClicked); + task_environment_.RunUntilIdle(); +} + +// Tests that the agent in 3P mode does fill secure forms. +TEST_F(AutofillAgentTestUsingPlatformAutofill, + AskForValuesToFillWithSecureContext) { + EXPECT_CALL(autofill_driver(), FormsSeen); + LoadHTMLWithUrlOverride("<body><form><input id=ff></form></body>", + "https://example.com"); // Needs secure context! + WaitForFormsSeen(); + + EXPECT_CALL(autofill_driver(), AskForValuesToFill); + autofill_agent().TriggerSuggestions( + GetFieldRendererIdById("ff"), + AutofillSuggestionTriggerSource::kFormControlElementClicked); + task_environment_.RunUntilIdle(); +} + // Test fixture for caret position extraction and movement detection. class AutofillAgentTestCaret : public AutofillAgentTest,
diff --git a/components/autofill/content/renderer/autofill_renderer_test.cc b/components/autofill/content/renderer/autofill_renderer_test.cc index 47f0fa4..2e72968 100644 --- a/components/autofill/content/renderer/autofill_renderer_test.cc +++ b/components/autofill/content/renderer/autofill_renderer_test.cc
@@ -47,9 +47,8 @@ GetMainRenderFrame(), password_autofill_agent.get(), &associated_interfaces_); autofill_agent_ = CreateAutofillAgent( - GetMainRenderFrame(), AutofillAgent::Config(), - std::move(password_autofill_agent), std::move(password_generation_agent), - &associated_interfaces_); + GetMainRenderFrame(), std::move(password_autofill_agent), + std::move(password_generation_agent), &associated_interfaces_); } void AutofillRendererTest::TearDown() { @@ -63,12 +62,11 @@ std::unique_ptr<AutofillAgent> AutofillRendererTest::CreateAutofillAgent( content::RenderFrame* render_frame, - const AutofillAgent::Config& config, std::unique_ptr<PasswordAutofillAgent> password_autofill_agent, std::unique_ptr<PasswordGenerationAgent> password_generation_agent, blink::AssociatedInterfaceRegistry* associated_interfaces) { return std::make_unique<AutofillAgent>( - render_frame, config, std::move(password_autofill_agent), + render_frame, std::move(password_autofill_agent), std::move(password_generation_agent), associated_interfaces); }
diff --git a/components/autofill/content/renderer/autofill_renderer_test.h b/components/autofill/content/renderer/autofill_renderer_test.h index 8e116e8..6193df6 100644 --- a/components/autofill/content/renderer/autofill_renderer_test.h +++ b/components/autofill/content/renderer/autofill_renderer_test.h
@@ -111,7 +111,6 @@ virtual std::unique_ptr<AutofillAgent> CreateAutofillAgent( content::RenderFrame* render_frame, - const AutofillAgent::Config& config, std::unique_ptr<PasswordAutofillAgent> password_autofill_agent, std::unique_ptr<PasswordGenerationAgent> password_generation_agent, blink::AssociatedInterfaceRegistry* associated_interfaces);
diff --git a/components/autofill/core/browser/BUILD.gn b/components/autofill/core/browser/BUILD.gn index 719f64f..f506b69 100644 --- a/components/autofill/core/browser/BUILD.gn +++ b/components/autofill/core/browser/BUILD.gn
@@ -140,8 +140,6 @@ "data_model/bank_account.h", "data_model/bnpl_issuer.cc", "data_model/bnpl_issuer.h", - "data_model/borrowed_transliterator.cc", - "data_model/borrowed_transliterator.h", "data_model/contact_info.cc", "data_model/contact_info.h", "data_model/credit_card.cc", @@ -168,6 +166,8 @@ "data_model/phone_number.h", "data_model/profile_value_source.cc", "data_model/profile_value_source.h", + "data_model/transliterator.cc", + "data_model/transliterator.h", "data_quality/addresses/address_normalization_manager.cc", "data_quality/addresses/address_normalization_manager.h", "data_quality/addresses/address_normalizer.h", @@ -772,6 +772,7 @@ "//components/infobars/core", "//components/keyed_service/core", "//components/language/core/browser", + "//components/language_detection/core", "//components/optimization_guide:machine_learning_tflite_buildflags", "//components/optimization_guide/core", "//components/optimization_guide/proto:optimization_guide_proto", @@ -1160,7 +1161,6 @@ "data_model/autofill_structured_address_utils_unittest.cc", "data_model/bank_account_unittest.cc", "data_model/bnpl_issuer_unittest.cc", - "data_model/borrowed_transliterator_unittest.cc", "data_model/contact_info_unittest.cc", "data_model/credit_card_benefit_unittest.cc", "data_model/credit_card_unittest.cc", @@ -1169,6 +1169,7 @@ "data_model/payment_instrument_unittest.cc", "data_model/phone_number_unittest.cc", "data_model/profile_value_source_unittest.cc", + "data_model/transliterator_unittest.cc", "data_quality/addresses/address_normalization_manager_unittest.cc", "data_quality/addresses/address_normalizer_impl_unittest.cc", "data_quality/addresses/profile_requirement_utils_unittest.cc",
diff --git a/components/autofill/core/browser/DEPS b/components/autofill/core/browser/DEPS index 40b1c9d0..68ef8dd 100644 --- a/components/autofill/core/browser/DEPS +++ b/components/autofill/core/browser/DEPS
@@ -10,6 +10,7 @@ "+components/infobars/core", "+components/keyed_service/core", "+components/language/core/browser", + "+components/language_detection/core", "+components/leveldb_proto", "+components/metrics", "+components/optimization_guide",
diff --git a/components/autofill/core/browser/crowdsourcing/determine_possible_field_types_unittest.cc b/components/autofill/core/browser/crowdsourcing/determine_possible_field_types_unittest.cc index 228bee3..842b8cd 100644 --- a/components/autofill/core/browser/crowdsourcing/determine_possible_field_types_unittest.cc +++ b/components/autofill/core/browser/crowdsourcing/determine_possible_field_types_unittest.cc
@@ -144,12 +144,15 @@ public ::testing::WithParamInterface<ProfileMatchingTypesTestCase> { public: ProfileMatchingTypesTest() { - features_.InitWithFeatures({features::kAutofillUseCAAddressModel, - features::kAutofillUseFRAddressModel, - features::kAutofillUseITAddressModel, - features::kAutofillUseNLAddressModel - }, - {}); + features_.InitWithFeatures( + { + features::kAutofillUseCAAddressModel, + features::kAutofillUseFRAddressModel, + features::kAutofillUseITAddressModel, + features::kAutofillUseNLAddressModel, + features::kAutofillUseNegativePatternForAllAttributes, + }, + {}); } protected:
diff --git a/components/autofill/core/browser/data_manager/addresses/address_data_manager.cc b/components/autofill/core/browser/data_manager/addresses/address_data_manager.cc index 5f6f7da..ff1a5cf 100644 --- a/components/autofill/core/browser/data_manager/addresses/address_data_manager.cc +++ b/components/autofill/core/browser/data_manager/addresses/address_data_manager.cc
@@ -603,10 +603,7 @@ } bool AddressDataManager::IsAutofillSyncToggleAvailable() const { - // These checks should be removed once the feature is fully launched. - if (!base::FeatureList::IsEnabled( - syncer::kSyncEnableContactInfoDataTypeInTransportMode) || - !pref_service_->GetBoolean(::prefs::kExplicitBrowserSignin)) { + if (!pref_service_->GetBoolean(::prefs::kExplicitBrowserSignin)) { return false; }
diff --git a/components/autofill/core/browser/data_manager/addresses/address_data_manager_unittest.cc b/components/autofill/core/browser/data_manager/addresses/address_data_manager_unittest.cc index 0525761..57f15fcd 100644 --- a/components/autofill/core/browser/data_manager/addresses/address_data_manager_unittest.cc +++ b/components/autofill/core/browser/data_manager/addresses/address_data_manager_unittest.cc
@@ -1167,12 +1167,8 @@ TEST_F(AddressDataManagerTest, AutofillSyncToggleAvailableInTransportMode) { ResetAddressDataManager( /*use_sync_transport_mode=*/true); - base::test::ScopedFeatureList feature_list; - feature_list.InitWithFeatures( - /*enabled_features=*/{syncer:: - kSyncEnableContactInfoDataTypeInTransportMode, - ::switches::kExplicitBrowserSigninUIOnDesktop}, - /*disabled_features=*/{}); + base::test::ScopedFeatureList feature_list{ + ::switches::kExplicitBrowserSigninUIOnDesktop}; const CoreAccountInfo& account = sync_service_.GetAccountInfo(); identity_test_env_.SimulateSuccessfulFetchOfAccountInfo( account.account_id, account.email, account.gaia,
diff --git a/components/autofill/core/browser/data_manager/personal_data_manager.cc b/components/autofill/core/browser/data_manager/personal_data_manager.cc index caa18b7..56ab4f5 100644 --- a/components/autofill/core/browser/data_manager/personal_data_manager.cc +++ b/components/autofill/core/browser/data_manager/personal_data_manager.cc
@@ -32,8 +32,7 @@ std::unique_ptr<AutofillSharedStorageHandler> shared_storage_handler, std::string app_locale, std::string variations_country_code) - : pref_service_(pref_service), - history_service_(history_service) { + : pref_service_(pref_service) { address_data_manager_ = std::make_unique<AddressDataManager>( profile_database, pref_service, local_state, sync_service, identity_manager, strike_database, @@ -47,8 +46,8 @@ payments_data_manager_observation_.Observe(payments_data_manager_.get()); // Listen for URL deletions from browsing history. - if (history_service_) { - history_service_observation_.Observe(history_service_.get()); + if (history_service) { + history_service_observation_.Observe(history_service); } // WebDataService may not be available in tests. @@ -68,10 +67,7 @@ PersonalDataManager::~PersonalDataManager() = default; void PersonalDataManager::Shutdown() { - if (history_service_) { - history_service_observation_.Reset(); - } - history_service_ = nullptr; + history_service_observation_.Reset(); address_data_manager_->Shutdown(); payments_data_manager_->Shutdown(); }
diff --git a/components/autofill/core/browser/data_manager/personal_data_manager.h b/components/autofill/core/browser/data_manager/personal_data_manager.h index 694a01c..41bd46b 100644 --- a/components/autofill/core/browser/data_manager/personal_data_manager.h +++ b/components/autofill/core/browser/data_manager/personal_data_manager.h
@@ -16,7 +16,6 @@ #include "components/autofill/core/browser/data_manager/addresses/address_data_manager.h" #include "components/autofill/core/browser/data_manager/payments/payments_data_manager.h" #include "components/autofill/core/browser/webdata/autofill_webdata_service.h" -#include "components/history/core/browser/history_service.h" #include "components/history/core/browser/history_service_observer.h" #include "components/keyed_service/core/keyed_service.h" #include "components/signin/public/identity_manager/identity_manager.h" @@ -172,11 +171,6 @@ private: base::ObserverList<PersonalDataManagerObserver>::Unchecked observers_; - // The HistoryService to be observed by the personal data manager. Must - // outlive this instance. This unowned pointer is retained so the PDM can - // remove itself from the history service's observer list on shutdown. - raw_ptr<history::HistoryService> history_service_ = nullptr; - base::ScopedObservation<history::HistoryService, HistoryServiceObserver> history_service_observation_{this};
diff --git a/components/autofill/core/browser/data_model/autofill_profile_comparator.cc b/components/autofill/core/browser/data_model/autofill_profile_comparator.cc index 47aab4f..59bb9769 100644 --- a/components/autofill/core/browser/data_model/autofill_profile_comparator.cc +++ b/components/autofill/core/browser/data_model/autofill_profile_comparator.cc
@@ -19,8 +19,8 @@ #include "components/autofill/core/browser/data_model/autofill_structured_address_component.h" #include "components/autofill/core/browser/data_model/autofill_structured_address_name.h" #include "components/autofill/core/browser/data_model/autofill_structured_address_utils.h" -#include "components/autofill/core/browser/data_model/borrowed_transliterator.h" #include "components/autofill/core/browser/data_model/contact_info.h" +#include "components/autofill/core/browser/data_model/transliterator.h" #include "components/autofill/core/browser/data_quality/autofill_data_util.h" #include "components/autofill/core/browser/field_type_utils.h" #include "components/autofill/core/browser/field_types.h" @@ -248,10 +248,8 @@ if (type.has_value() && IsAlternativeNameType(type.value()) && base::FeatureList::IsEnabled( features::kAutofillSupportPhoneticNameForJP)) { - normalized_text1 = TransliterateAlternativeName( - normalized_text1, TransliterationId::kKatakanaToHiragana); - normalized_text2 = TransliterateAlternativeName( - normalized_text2, TransliterationId::kKatakanaToHiragana); + normalized_text1 = TransliterateAlternativeName(normalized_text1); + normalized_text2 = TransliterateAlternativeName(normalized_text2); } NormalizingIterator normalizing_iter1{normalized_text1, whitespace_spec};
diff --git a/components/autofill/core/browser/data_model/autofill_structured_address_name.cc b/components/autofill/core/browser/data_model/autofill_structured_address_name.cc index fe37787e..09775f8 100644 --- a/components/autofill/core/browser/data_model/autofill_structured_address_name.cc +++ b/components/autofill/core/browser/data_model/autofill_structured_address_name.cc
@@ -19,10 +19,9 @@ #include "components/autofill/core/browser/data_model/autofill_structured_address_format_provider.h" #include "components/autofill/core/browser/data_model/autofill_structured_address_regex_provider.h" #include "components/autofill/core/browser/data_model/autofill_structured_address_utils.h" +#include "components/autofill/core/browser/data_model/transliterator.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/common/autofill_features.h" -#include "third_party/icu/source/common/unicode/ustring.h" -#include "third_party/icu/source/i18n/unicode/translit.h" namespace autofill { @@ -236,8 +235,7 @@ const std::u16string& value, const AddressComponent& other) const { return TransliterateAlternativeName( - AddressComponent::GetValueForComparison(GetValue(), other), - TransliterationId::kKatakanaToHiragana); + AddressComponent::GetValueForComparison(GetValue(), other)); } AlternativeFamilyName::AlternativeFamilyName() @@ -249,8 +247,7 @@ const std::u16string& value, const AddressComponent& other) const { return TransliterateAlternativeName( - AddressComponent::GetValueForComparison(GetValue(), other), - TransliterationId::kKatakanaToHiragana); + AddressComponent::GetValueForComparison(GetValue(), other)); } AlternativeFullName::AlternativeFullName() @@ -297,8 +294,7 @@ const std::u16string& value, const AddressComponent& other) const { return TransliterateAlternativeName( - AddressComponent::GetValueForComparison(GetValue(), other), - TransliterationId::kKatakanaToHiragana); + AddressComponent::GetValueForComparison(GetValue(), other)); } } // namespace autofill
diff --git a/components/autofill/core/browser/data_model/autofill_structured_address_utils.cc b/components/autofill/core/browser/data_model/autofill_structured_address_utils.cc index 49bc7d0..405f80d 100644 --- a/components/autofill/core/browser/data_model/autofill_structured_address_utils.cc +++ b/components/autofill/core/browser/data_model/autofill_structured_address_utils.cc
@@ -25,10 +25,7 @@ #include "base/strings/utf_string_conversions.h" #include "components/autofill/core/browser/data_model/autofill_profile_comparator.h" #include "components/autofill/core/browser/data_model/autofill_structured_address_regex_provider.h" -#include "components/autofill/core/browser/data_model/borrowed_transliterator.h" #include "components/autofill/core/common/autofill_features.h" -#include "third_party/icu/source/common/unicode/ustring.h" -#include "third_party/icu/source/i18n/unicode/translit.h" namespace autofill { @@ -429,42 +426,4 @@ return tokens; } -std::u16string TransliterateAlternativeName(const std::u16string& value, - TransliterationId id) { - if (value.empty()) { - return value; - } - - std::string transliteration_rule; - switch (id) { - case TransliterationId::kKatakanaToHiragana: - transliteration_rule = "Katakana-Hiragana"; - break; - case TransliterationId::kHiraganaToKatakana: - transliteration_rule = "Hiragana-Katakana"; - break; - } - - UErrorCode err = U_ZERO_ERROR; - std::unique_ptr<icu::Transliterator> transliterator( - icu::Transliterator::createInstance(transliteration_rule.c_str(), - UTRANS_FORWARD, err)); - if (U_FAILURE(err)) { - // TODO(crbug.com/359768803): Remove the metric recording once we confirm - // that transliteration initialization never fails. - // This metric records the status of the transliterator initialization. It - // is set to false if the initialization fails. - base::UmaHistogramBoolean( - "Autofill.Filling.AlternativeNameTransliteratorInitStatus", false); - return value; - } - icu::UnicodeString transliterated_value(value.c_str()); - transliterator->transliterate(transliterated_value); - // The metric is set to true if the transliterator initialization was - // successful. - base::UmaHistogramBoolean( - "Autofill.Filling.AlternativeNameTransliteratorInitStatus", true); - return base::i18n::UnicodeStringToString16(transliterated_value); -} - } // namespace autofill
diff --git a/components/autofill/core/browser/data_model/autofill_structured_address_utils.h b/components/autofill/core/browser/data_model/autofill_structured_address_utils.h index 8770e5b..154810c 100644 --- a/components/autofill/core/browser/data_model/autofill_structured_address_utils.h +++ b/components/autofill/core/browser/data_model/autofill_structured_address_utils.h
@@ -58,14 +58,6 @@ kSuperset }; -// The id of the transliteration rule to be applied. -enum class TransliterationId { - // ICU Katakana-Hiragana transliteration. - kKatakanaToHiragana, - // ICU Hiragana-Katakana transliteration. - kHiraganaToKatakana, -}; - // The result from comparing two sets of sorted tokens containing the status and // the additional tokens in the super/sub sets. struct SortedTokenComparisonResult { @@ -289,11 +281,5 @@ SortedTokenComparisonResult CompareSortedTokens(const std::u16string& first, const std::u16string& second); -// This function transliterates (i.e. converts a string to a semantically the -// same string, but with a different character set) the `value` using the ICU -// library. -std::u16string TransliterateAlternativeName(const std::u16string& value, - TransliterationId id); - } // namespace autofill #endif // COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_AUTOFILL_STRUCTURED_ADDRESS_UTILS_H_
diff --git a/components/autofill/core/browser/data_model/borrowed_transliterator.cc b/components/autofill/core/browser/data_model/borrowed_transliterator.cc deleted file mode 100644 index 8d6e204..0000000 --- a/components/autofill/core/browser/data_model/borrowed_transliterator.cc +++ /dev/null
@@ -1,104 +0,0 @@ -// Copyright 2020 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "components/autofill/core/browser/data_model/borrowed_transliterator.h" - -#include <string_view> - -#include "base/containers/fixed_flat_set.h" -#include "base/feature_list.h" -#include "base/logging.h" -#include "base/no_destructor.h" -#include "components/autofill/core/common/autofill_features.h" - -namespace autofill { - -BorrowedTransliterator::BorrowedTransliterator() : auto_lock_(GetLock()) {} - -BorrowedTransliterator::~BorrowedTransliterator() = default; - -void BorrowedTransliterator::Transliterate( - icu::UnicodeString& text, - AddressCountryCode country_code) const { - if (GetTransliterator(country_code) != nullptr) { - GetTransliterator(country_code)->transliterate(text); - } else { - text = text.toLower(); - } -} - -// static -base::Lock& BorrowedTransliterator::GetLock() { - static base::NoDestructor<base::Lock> instance; - return *instance; -} - -// static -std::unique_ptr<icu::Transliterator>& BorrowedTransliterator::GetTransliterator( - const AddressCountryCode& country_code) const { - // Apply German transliteration according to DIN 5007-2 in these countries. - // "ö" becomes "oe" instead of "o." - static constexpr auto kCountriesWithGermanTransliteration = - base::MakeFixedFlatSet<std::string_view>( - {"AT", "BE", "CH", "DE", "IT", "LI", "LU"}); - - auto create_transliteration = [](bool apply_german_transliteration) { - UErrorCode status = U_ZERO_ERROR; - UParseError parse_error; - // This is happening in the following rule: - // "::NFD;" performs a decomposition and normalization. (â becomes a and ̂) - // "::[:Nonspacing Mark:] Remove;" removes the " ̂" - // "::Lower;" converts the result to lower case - // "::NFC;" re-composes the decomposed characters - // "::Latin-ASCII;" converts various other Latin characters to an ASCII - // representation (e.g. "ł", which does not get decomposed, to "l"; "ß" to - // "ss"). - - icu::UnicodeString transliteration_rules = - "::NFD; ::[:Nonspacing Mark:] Remove; ::Lower; ::NFC; ::Latin-ASCII;"; - - if (apply_german_transliteration) { - // Apply a simplified version of the "::de-ASCII" transliteration, which - // follows DIN 5007-2 ("ö" becomes "oe"). Here we map everything to - // lower case because that happens with "::Lower" anyway. - transliteration_rules = icu::UnicodeString( - "[ö {o \u0308} Ö {O \u0308}] → oe;" - "[ä {a \u0308} Ä {A \u0308}] → ae;" - "[ü {u \u0308} Ü {U \u0308}] → ue;") + - transliteration_rules; - } - - std::unique_ptr<icu::Transliterator> transliterator( - icu::Transliterator::createFromRules( - "NormalizeForAddresses", transliteration_rules, UTRANS_FORWARD, - parse_error, status)); - if (U_FAILURE(status) || transliterator == nullptr) { - // TODO(rogerm): Add a histogram to count how often this happens. - LOG(ERROR) << "Failed to create ICU Transliterator: " - << u_errorName(status); - } - return transliterator; - }; - - if (kCountriesWithGermanTransliteration.contains(country_code.value()) && - base::FeatureList::IsEnabled( - features::kAutofillEnableGermanTransliteration)) { - static base::NoDestructor<std::unique_ptr<icu::Transliterator>> instance( - create_transliteration(/*apply_german_transliteration=*/true)); - return *instance; - } - static base::NoDestructor<std::unique_ptr<icu::Transliterator>> instance( - create_transliteration(/*apply_german_transliteration=*/false)); - return *instance; -} - -std::u16string RemoveDiacriticsAndConvertToLowerCase( - std::u16string_view value, - const AddressCountryCode& country_code) { - icu::UnicodeString result = icu::UnicodeString(value.data(), value.length()); - BorrowedTransliterator().Transliterate(result, country_code); - return base::i18n::UnicodeStringToString16(result); -} - -} // namespace autofill
diff --git a/components/autofill/core/browser/data_model/borrowed_transliterator.h b/components/autofill/core/browser/data_model/borrowed_transliterator.h deleted file mode 100644 index 0b45c4c0..0000000 --- a/components/autofill/core/browser/data_model/borrowed_transliterator.h +++ /dev/null
@@ -1,56 +0,0 @@ -// Copyright 2020 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_BORROWED_TRANSLITERATOR_H_ -#define COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_BORROWED_TRANSLITERATOR_H_ - -#include <string_view> - -#include "base/i18n/unicodestring.h" -#include "base/memory/stack_allocated.h" -#include "base/synchronization/lock.h" -#include "components/autofill/core/browser/country_type.h" -#include "third_party/icu/source/common/unicode/unistr.h" -#include "third_party/icu/source/i18n/unicode/translit.h" - -namespace autofill { - -// This RAII class provides a thread-safe interface to a shared transliterator. -// Sharing a single transliterator is advisable due its high construction cost. -class BorrowedTransliterator { - STACK_ALLOCATED(); - - public: - BorrowedTransliterator(); - virtual ~BorrowedTransliterator(); - - // Use ICU transliteration to remove diacritics, fold case and transliterate - // Latin to ASCII. If a `country_code` is provided, German transliteration is - // applied on German speaking countries. - // See http://userguide.icu-project.org/transforms/general - void Transliterate( - icu::UnicodeString& text, - AddressCountryCode country_code = AddressCountryCode("")) const; - - private: - static base::Lock& GetLock(); - std::unique_ptr<icu::Transliterator>& GetTransliterator( - const AddressCountryCode& country_code) const; - - base::AutoLock auto_lock_; -}; - -// Apply the transliteration to a full string to convert it to lower case and to -// remove the diacritics. This function also converts other Latin characters to -// ascii (ł -> l, ß -> ss) and applies German transliteration on German speaking -// countries when a `country_code` is provided. Note that the function does not -// apply German transliteration unconditionally because it's incorrect in many -// languages. -std::u16string RemoveDiacriticsAndConvertToLowerCase( - std::u16string_view value, - const AddressCountryCode& country_code = AddressCountryCode("")); - -} // namespace autofill - -#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_BORROWED_TRANSLITERATOR_H_
diff --git a/components/autofill/core/browser/data_model/transliterator.cc b/components/autofill/core/browser/data_model/transliterator.cc new file mode 100644 index 0000000..73961ff --- /dev/null +++ b/components/autofill/core/browser/data_model/transliterator.cc
@@ -0,0 +1,153 @@ +// Copyright 2025 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/autofill/core/browser/data_model/transliterator.h" + +#include <memory> + +#include "base/containers/fixed_flat_set.h" +#include "base/feature_list.h" +#include "base/i18n/unicodestring.h" +#include "base/memory/ptr_util.h" +#include "base/metrics/histogram_functions.h" +#include "base/strings/string_util.h" +#include "components/autofill/core/browser/country_type.h" +#include "components/autofill/core/browser/data_model/address.h" +#include "components/autofill/core/common/autofill_features.h" +#include "third_party/icu/source/i18n/unicode/translit.h" + +namespace autofill { + +namespace { + +// The transliteration rule to be applied. +enum class TransliterationId { + // ICU Katakana-Hiragana transliteration. + kKatakanaToHiragana, + // ICU Hiragana-Katakana transliteration. + kHiraganaToKatakana, + // Simplified version of the ICU "::de-ASCII" transliteration. + kGerman, + // Converts to lowercase and removes diacritics. + kDefault, +}; + +// List of country codes where the `TransliterationId::kGerman` can be applied. +static constexpr auto kCountriesWithGermanTransliteration = + base::MakeFixedFlatSet<std::string_view>( + {"AT", "BE", "CH", "DE", "IT", "LI", "LU"}); + +std::unique_ptr<icu::Transliterator> GetTransliterator(TransliterationId id, + UErrorCode& err) { + icu::UnicodeString transliteration_rules; + UParseError parse_error; + icu::Transliterator* transliterator; + + switch (id) { + case TransliterationId::kKatakanaToHiragana: + transliterator = icu::Transliterator::createInstance("Katakana-Hiragana", + UTRANS_FORWARD, err); + break; + case TransliterationId::kHiraganaToKatakana: + transliterator = icu::Transliterator::createInstance("Hiragana-Katakana", + UTRANS_FORWARD, err); + break; + case TransliterationId::kGerman: + // Apply a simplified version of the "::de-ASCII" transliteration, which + // follows DIN 5007-2 ("ö" becomes "oe"). Here we map everything to + // lower case because that happens with "::Lower" anyway. + transliteration_rules = icu::UnicodeString( + "[ö {o \u0308} Ö {O \u0308}] → oe;" + "[ä {a \u0308} Ä {A \u0308}] → ae;" + "[ü {u \u0308} Ü {U \u0308}] → ue;"); + [[fallthrough]]; + case TransliterationId::kDefault: + // This rules are happening in the following order: + // First there are `TransliterationId::kGerman` specific rules if they are + // present, then + // "::NFD;" performs a decomposition and normalization. + // (â becomes a and ̂) + // "::[:Nonspacing Mark:] Remove;" removes the " ̂" + // "::Lower;" converts the result to lower case + // "::NFC;" re-composes the decomposed characters + // "::Latin-ASCII;" converts various other Latin characters to an ASCII + // representation (e.g. "ł", which does not get decomposed, to "l"; "ß" + // to "ss"). + transliteration_rules += + "::NFD; ::[:Nonspacing Mark:] Remove; ::Lower; ::NFC; ::Latin-ASCII;"; + transliterator = icu::Transliterator::createFromRules( + "NormalizeForAddresses", transliteration_rules, UTRANS_FORWARD, + parse_error, err); + break; + } + + if (U_FAILURE(err) || transliterator == nullptr) { + // TODO(crbug.com/328968064): Add a histogram to count how often this + // happens. + LOG(ERROR) << "Failed to create ICU Transliterator: " << u_errorName(err); + return nullptr; + } + + return base::WrapUnique(transliterator); +} +} // namespace + +std::u16string RemoveDiacriticsAndConvertToLowerCase( + std::u16string_view value, + const AddressCountryCode& country_code) { + if (value.empty()) { + return std::u16string(value); + } + + UErrorCode err = U_ZERO_ERROR; + TransliterationId transliteration_id = + kCountriesWithGermanTransliteration.contains(country_code.value()) && + base::FeatureList::IsEnabled( + features::kAutofillEnableGermanTransliteration) + ? TransliterationId::kGerman + : TransliterationId::kDefault; + std::unique_ptr<icu::Transliterator> transliterator = + GetTransliterator(transliteration_id, err); + + if (U_FAILURE(err) || !transliterator) { + return base::i18n::ToLower(value); + } + icu::UnicodeString transliterated_value( + icu::UnicodeString(value.data(), value.length())); + transliterator->transliterate(transliterated_value); + return base::i18n::UnicodeStringToString16(transliterated_value); +} + +std::u16string TransliterateAlternativeName(std::u16string_view value, + bool inverse_transliteration) { + if (value.empty()) { + return std::u16string(value); + } + + UErrorCode err = U_ZERO_ERROR; + std::unique_ptr<icu::Transliterator> transliterator = GetTransliterator( + inverse_transliteration ? TransliterationId::kHiraganaToKatakana + : TransliterationId::kKatakanaToHiragana, + err); + + if (U_FAILURE(err) || !transliterator) { + // TODO(crbug.com/359768803): Remove the metric recording once we confirm + // that transliteration initialization never fails. + // This metric records the status of the transliterator initialization. It + // is set to false if the initialization fails. + base::UmaHistogramBoolean( + "Autofill.Filling.AlternativeNameTransliteratorInitStatus", false); + return base::i18n::ToLower(value); + } + icu::UnicodeString transliterated_value( + icu::UnicodeString(value.data(), value.length())); + transliterator->transliterate(transliterated_value); + // The metric is set to true if the transliterator initialization was + // successful. + base::UmaHistogramBoolean( + "Autofill.Filling.AlternativeNameTransliteratorInitStatus", true); + return base::i18n::UnicodeStringToString16(transliterated_value); +} + +} // namespace autofill
diff --git a/components/autofill/core/browser/data_model/transliterator.h b/components/autofill/core/browser/data_model/transliterator.h new file mode 100644 index 0000000..0aac388 --- /dev/null +++ b/components/autofill/core/browser/data_model/transliterator.h
@@ -0,0 +1,34 @@ +// Copyright 2025 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_TRANSLITERATOR_H_ +#define COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_TRANSLITERATOR_H_ + +#include "components/autofill/core/browser/country_type.h" + +namespace autofill { + +// Applies the transliteration to a full string to convert it to lower case and +// to remove the diacritics. This function also converts other Latin characters +// to ascii (ł -> l, ß -> ss) and applies German transliteration on German +// speaking countries when a `country_code` is provided. Note that the function +// does not apply German transliteration unconditionally because it's incorrect +// in many languages. +std::u16string RemoveDiacriticsAndConvertToLowerCase( + std::u16string_view value, + const AddressCountryCode& country_code = AddressCountryCode("")); + +// This function transliterates (i.e. converts a string to a semantically the +// same string, but with a different character set) the `value` using the ICU +// library. +// By default the transliteration happens from Katakana to Hiragana, if the +// `inverse_transliteration` is set to true, then the transliteration will +// happen from Hiragana to Katakana. +std::u16string TransliterateAlternativeName( + std::u16string_view value, + bool inverse_transliteration = false); + +} // namespace autofill + +#endif // COMPONENTS_AUTOFILL_CORE_BROWSER_DATA_MODEL_TRANSLITERATOR_H_
diff --git a/components/autofill/core/browser/data_model/borrowed_transliterator_unittest.cc b/components/autofill/core/browser/data_model/transliterator_unittest.cc similarity index 85% rename from components/autofill/core/browser/data_model/borrowed_transliterator_unittest.cc rename to components/autofill/core/browser/data_model/transliterator_unittest.cc index e82497e9..f5c929cf 100644 --- a/components/autofill/core/browser/data_model/borrowed_transliterator_unittest.cc +++ b/components/autofill/core/browser/data_model/transliterator_unittest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "components/autofill/core/browser/data_model/borrowed_transliterator.h" +#include "components/autofill/core/browser/data_model/transliterator.h" #include "base/strings/utf_string_conversions.h" #include "base/test/gtest_util.h" @@ -12,13 +12,13 @@ namespace autofill { -TEST(BorrowedTransliterator, RemoveDiacriticsAndConvertToLowerCase) { +TEST(Transliterator, RemoveDiacriticsAndConvertToLowerCase) { EXPECT_EQ(RemoveDiacriticsAndConvertToLowerCase( u"āēaa11.īūčģķļņšžKāäǟḑēīļņōȯȱõȭŗšțūžßł"), u"aeaa11.iucgklnszkaaadeilnooooorstuzssl"); } -TEST(BorrowedTransliterator, GermanTransliteration) { +TEST(Transliterator, GermanTransliteration) { base::test::ScopedFeatureList features{ features::kAutofillEnableGermanTransliteration}; EXPECT_EQ(
diff --git a/components/autofill/core/browser/filling/addresses/field_filling_address_util.cc b/components/autofill/core/browser/filling/addresses/field_filling_address_util.cc index f18bacc..92bd448 100644 --- a/components/autofill/core/browser/filling/addresses/field_filling_address_util.cc +++ b/components/autofill/core/browser/filling/addresses/field_filling_address_util.cc
@@ -18,6 +18,7 @@ #include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/data_model/autofill_structured_address_utils.h" #include "components/autofill/core/browser/data_model/data_model_utils.h" +#include "components/autofill/core/browser/data_model/transliterator.h" #include "components/autofill/core/browser/data_quality/addresses/address_normalizer.h" #include "components/autofill/core/browser/data_quality/autofill_data_util.h" #include "components/autofill/core/browser/field_type_utils.h" @@ -358,10 +359,9 @@ base::UmaHistogramBoolean( "Autofill.Filling.DidAlternativeNameFieldRequireConversion", requires_conversion); - return requires_conversion - ? TransliterateAlternativeName( - value, TransliterationId::kHiraganaToKatakana) - : value; + return requires_conversion ? TransliterateAlternativeName( + value, /*inverse_transliteration=*/true) + : value; } // Finds the best suitable option in the `field` that corresponds to the
diff --git a/components/autofill/core/browser/form_import/form_data_importer.cc b/components/autofill/core/browser/form_import/form_data_importer.cc index f5e77d5a..20cd2dfc 100644 --- a/components/autofill/core/browser/form_import/form_data_importer.cc +++ b/components/autofill/core/browser/form_import/form_data_importer.cc
@@ -63,6 +63,7 @@ #include "components/autofill/core/common/autofill_internals/logging_scope.h" #include "components/autofill/core/common/autofill_payments_features.h" #include "components/autofill/core/common/autofill_util.h" +#include "components/history/core/browser/history_service.h" namespace autofill {
diff --git a/components/autofill/core/browser/form_parsing/form_field_parser.cc b/components/autofill/core/browser/form_parsing/form_field_parser.cc index b5ef785..ecdeb6bb 100644 --- a/components/autofill/core/browser/form_parsing/form_field_parser.cc +++ b/components/autofill/core/browser/form_parsing/form_field_parser.cc
@@ -468,10 +468,20 @@ // For each attribute that is active for the current pattern, test if it // matches the negative pattern. If so, remove it from the attributes that // are considered for positive matching. + // TODO(crbug.com/386916943): Remove this code path once + // kAutofillUseNegativePatternForAllAttributes is launched. + // If kAutofillUseNegativePatternForAllAttributes is enabled, negative + // pattern matched on a single attribute will clear all attributes. for (MatchAttribute attribute : match_params.attributes) { if (Match(context, field, pattern.negative_pattern, {attribute}, regex_name, /*is_negative_pattern=*/true)) { - reduced_attributes.erase(attribute); + if (base::FeatureList::IsEnabled( + features::kAutofillUseNegativePatternForAllAttributes)) { + reduced_attributes.clear(); + break; + } else { + reduced_attributes.erase(attribute); + } } } if (reduced_attributes.empty()) {
diff --git a/components/autofill/core/browser/form_parsing/name_field_parser_unittest.cc b/components/autofill/core/browser/form_parsing/name_field_parser_unittest.cc index 6a5b690..04b0ea06 100644 --- a/components/autofill/core/browser/form_parsing/name_field_parser_unittest.cc +++ b/components/autofill/core/browser/form_parsing/name_field_parser_unittest.cc
@@ -40,6 +40,10 @@ AutofillScanner* scanner) override { return NameFieldParser::Parse(context, scanner); } + + private: + base::test::ScopedFeatureList scoped_features{ + features::kAutofillUseNegativePatternForAllAttributes}; }; TEST_F(NameFieldParserTest, FirstMiddleLast) { @@ -224,6 +228,18 @@ ClassifyAndVerify(ParseResult::kParsed); } +// Tests that a field for a surname is not parsed as a name field if it has a +// negative pattern match with only one attribute. +// "surname5" is a negative pattern for surname, while "surname" is a positive +// pattern for surname. We expect the field to be not parsed even if negative +// pattern is matched on a different attribute. +TEST_F(NameFieldParserTest, NameSurnameNegativePatternDifferentAttributes) { + AddTextFormFieldData("firstname", "firstname", UNKNOWN_TYPE); + AddTextFormFieldData("surname5", "surname", UNKNOWN_TYPE); + + ClassifyAndVerify(ParseResult::kNotParsed); +} + } // namespace } // namespace autofill
diff --git a/components/autofill/core/browser/foundations/autofill_manager.cc b/components/autofill/core/browser/foundations/autofill_manager.cc index eefcc74dd..bc30875 100644 --- a/components/autofill/core/browser/foundations/autofill_manager.cc +++ b/components/autofill/core/browser/foundations/autofill_manager.cc
@@ -28,9 +28,9 @@ #include "components/autofill/core/common/autofill_internals/logging_scope.h" #include "components/autofill/core/common/autofill_payments_features.h" #include "components/autofill/core/common/autofill_switches.h" +#include "components/language_detection/core/constants.h" #include "components/optimization_guide/machine_learning_tflite_buildflags.h" #include "components/translate/core/common/language_detection_details.h" -#include "components/translate/core/common/translate_constants.h" #include "third_party/abseil-cpp/absl/cleanup/cleanup.h" #include "ui/gfx/geometry/rect_f.h" @@ -188,7 +188,7 @@ !base::FeatureList::IsEnabled(features::kAutofillFixValueSemantics)) { return; } - if (details.adopted_language == translate::kUnknownLanguageCode || + if (details.adopted_language == language_detection::kUnknownLanguageCode || !driver_->IsActive()) { return; }
diff --git a/components/autofill/core/browser/foundations/browser_autofill_manager.cc b/components/autofill/core/browser/foundations/browser_autofill_manager.cc index 58f74f0..5c06196 100644 --- a/components/autofill/core/browser/foundations/browser_autofill_manager.cc +++ b/components/autofill/core/browser/foundations/browser_autofill_manager.cc
@@ -71,9 +71,9 @@ #include "components/autofill/core/browser/data_model/autofill_data_model.h" #include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/data_model/autofill_profile_comparator.h" -#include "components/autofill/core/browser/data_model/borrowed_transliterator.h" #include "components/autofill/core/browser/data_model/credit_card.h" #include "components/autofill/core/browser/data_model/phone_number.h" +#include "components/autofill/core/browser/data_model/transliterator.h" #include "components/autofill/core/browser/data_quality/addresses/profile_token_quality.h" #include "components/autofill/core/browser/data_quality/autofill_data_util.h" #include "components/autofill/core/browser/data_quality/validation.h" @@ -96,6 +96,7 @@ #include "components/autofill/core/browser/metrics/autofill_metrics_utils.h" #include "components/autofill/core/browser/metrics/autofill_settings_metrics.h" #include "components/autofill/core/browser/metrics/field_filling_stats_and_score_metrics.h" +#include "components/autofill/core/browser/metrics/form_events/address_form_event_logger.h" #include "components/autofill/core/browser/metrics/form_events/form_event_logger_base.h" #include "components/autofill/core/browser/metrics/form_events/form_events.h" #include "components/autofill/core/browser/metrics/form_interactions_ukm_logger.h" @@ -1705,9 +1706,10 @@ void BrowserAutofillManager::OnDidFillAddressOnTypingSuggestion( const FieldGlobalId& field_id, const std::u16string& value, - FieldType field_type_used_to_build_suggestion) { + FieldType field_type_used_to_build_suggestion, + const std::string& profile_used_guid) { metrics_->address_form_event_logger.OnDidAcceptAutofillOnTyping( - field_id, value, field_type_used_to_build_suggestion); + field_id, value, field_type_used_to_build_suggestion, profile_used_guid); } void BrowserAutofillManager::UndoAutofill( @@ -1958,14 +1960,26 @@ SuggestionType::kManageAddress}) .contains_all(shown_suggestion_types)); FieldTypeSet field_types_used; + std::map<std::string, base::TimeDelta> profile_last_used_time_per_guid; + const base::Time now = base::Time::Now(); for (const Suggestion& suggestion : client().GetAutofillSuggestions()) { if (suggestion.type != SuggestionType::kAddressEntryOnTyping) { continue; } + const Suggestion::AutofillProfilePayload& profile_used_payload = + absl::get<Suggestion::AutofillProfilePayload>(suggestion.payload); + const AutofillProfile* profile_used = + client() + .GetPersonalDataManager() + .address_data_manager() + .GetProfileByGUID(profile_used_payload.guid.value()); + + profile_last_used_time_per_guid[profile_used_payload.guid.value()] = + now - profile_used->use_date(); field_types_used.insert(*suggestion.field_by_field_filling_type_used); } metrics_->address_form_event_logger.OnDidShownAutofillOnTyping( - field_id, field_types_used); + field_id, field_types_used, profile_last_used_time_per_guid); return; }
diff --git a/components/autofill/core/browser/foundations/browser_autofill_manager.h b/components/autofill/core/browser/foundations/browser_autofill_manager.h index d175e3b..56db4931 100644 --- a/components/autofill/core/browser/foundations/browser_autofill_manager.h +++ b/components/autofill/core/browser/foundations/browser_autofill_manager.h
@@ -169,7 +169,8 @@ virtual void OnDidFillAddressOnTypingSuggestion( const FieldGlobalId& field_id, const std::u16string& value, - FieldType field_type_used_to_build_suggestion); + FieldType field_type_used_to_build_suggestion, + const std::string& profile_used_guid); // Calls UndoAutofillImpl and logs metrics. Virtual for testing. virtual void UndoAutofill(mojom::ActionPersistence action_persistence,
diff --git a/components/autofill/core/browser/heuristic_classification_unittests.cc b/components/autofill/core/browser/heuristic_classification_unittests.cc index fdd9fc12..911f8257 100644 --- a/components/autofill/core/browser/heuristic_classification_unittests.cc +++ b/components/autofill/core/browser/heuristic_classification_unittests.cc
@@ -645,6 +645,7 @@ // Other improvements. features::kAutofillEnableCacheForRegexMatching, features::kAutofillEnableSupportForParsingWithSharedLabels, + features::kAutofillUseNegativePatternForAllAttributes, }; std::vector<base::test::FeatureRef> disabled_features = { // TODO(crbug.com/320965828): Understand the changes to the expectations
diff --git a/components/autofill/core/browser/metrics/form_events/address_form_event_logger.cc b/components/autofill/core/browser/metrics/form_events/address_form_event_logger.cc index 9420451..8557442 100644 --- a/components/autofill/core/browser/metrics/form_events/address_form_event_logger.cc +++ b/components/autofill/core/browser/metrics/form_events/address_form_event_logger.cc
@@ -10,6 +10,7 @@ #include <string> #include "base/metrics/histogram_functions.h" +#include "base/metrics/histogram_macros.h" #include "base/metrics/user_metrics.h" #include "base/metrics/user_metrics_action.h" #include "components/autofill/core/browser/autofill_trigger_source.h" @@ -55,8 +56,8 @@ AddressFormEventLogger::~AddressFormEventLogger() { // Once a `SuggestionType::kAutofillAddressOnTyping` suggestion // is accepted, we remove it from - // `fields_where_autofill_on_typing_was_shown_`. Therefore for the remaining - // fields, log that they were not accepted + // `fields_where_autofill_on_typing_was_shown_`. Therefore for + // the remaining fields, log that they were not accepted for (const auto& [field_global_id, field_types_used] : fields_where_autofill_on_typing_was_shown_) { base::UmaHistogramBoolean("Autofill.AddressSuggestionOnTypingAcceptance", @@ -68,6 +69,24 @@ field_type, /*suggestion_accepted=*/false)); } } + + // Log information about `SuggestionType::kAutofillAddressOnTyping` + // suggestions and profile usage. + for (auto [guid, last_used_time] : + autofill_on_typing_suggestion_profile_last_used_time_per_guid_) { + UMA_HISTOGRAM_COUNTS_1000( + "Autofill.AddressSuggestionOnTypingShown.DaysSinceLastUse.Profile", + last_used_time.InDays()); + } + + for (const std::string& profile_accepted_guid : + autofill_on_typing_suggestion_accepted_profile_used_) { + UMA_HISTOGRAM_COUNTS_1000( + "Autofill.AddressSuggestionOnTypingAccepted.DaysSinceLastUse.Profile", + autofill_on_typing_suggestion_profile_last_used_time_per_guid_ + [profile_accepted_guid] + .InDays()); + } } void AddressFormEventLogger::UpdateProfileAvailabilityForReadiness( @@ -113,7 +132,8 @@ void AddressFormEventLogger::OnDidShownAutofillOnTyping( FieldGlobalId field_global_id, - FieldTypeSet field_types_used) { + FieldTypeSet field_types_used, + std::map<std::string, base::TimeDelta> profile_last_used_time_per_guid) { if (fields_where_autofill_on_typing_was_shown_.contains(field_global_id)) { fields_where_autofill_on_typing_was_shown_[field_global_id].insert_all( field_types_used); @@ -121,13 +141,20 @@ fields_where_autofill_on_typing_was_shown_[field_global_id] = field_types_used; } + for (auto [guid, last_used_time] : profile_last_used_time_per_guid) { + autofill_on_typing_suggestion_profile_last_used_time_per_guid_[guid] = + last_used_time; + } } void AddressFormEventLogger::OnDidAcceptAutofillOnTyping( FieldGlobalId field_global_id, const std::u16string& value, - FieldType field_type_used_to_build_suggestion) { + FieldType field_type_used_to_build_suggestion, + const std::string profile_used_guid) { CHECK(fields_where_autofill_on_typing_was_shown_.contains(field_global_id)); + CHECK(autofill_on_typing_suggestion_profile_last_used_time_per_guid_.contains( + profile_used_guid)); autofill_on_typing_value_used_[field_global_id] = value; base::UmaHistogramBoolean("Autofill.AddressSuggestionOnTypingAcceptance", true); @@ -139,6 +166,10 @@ field_type, /*suggestion_accepted=*/field_type == field_type_used_to_build_suggestion)); } + // Stores the accepted profile and log on destruction as a way to avoid + // logging acceptance multiple times for the same profile. + autofill_on_typing_suggestion_accepted_profile_used_.insert( + profile_used_guid); fields_where_autofill_on_typing_was_shown_.erase(field_global_id); }
diff --git a/components/autofill/core/browser/metrics/form_events/address_form_event_logger.h b/components/autofill/core/browser/metrics/form_events/address_form_event_logger.h index d6cfe61..cd96e06 100644 --- a/components/autofill/core/browser/metrics/form_events/address_form_event_logger.h +++ b/components/autofill/core/browser/metrics/form_events/address_form_event_logger.h
@@ -55,18 +55,26 @@ // `field_global_id` is the id of the field where at least one // `SuggestionType::kAddressEntryOnTyping` suggestion was shown. // `field_types_used` specifies the `FieldType` used to build each suggestion. - void OnDidShownAutofillOnTyping(FieldGlobalId field_global_id, - FieldTypeSet field_types_used); + // For the profiles used to build the shown suggestions, + // `profile_last_used_time_per_guid` specifies the last time each of the + // profiles was used. + void OnDidShownAutofillOnTyping( + FieldGlobalId field_global_id, + FieldTypeSet field_types_used, + std::map<std::string, base::TimeDelta> profile_last_used_time_per_guid); // `field_global_id` is the id of the field where a // `SuggestionType::kAddressEntryOnTyping` was accepted. `value` is the the // literal string used to fill the field. // `field_type_used_to_build_suggestion` is the autofill `FieldType` from // which `value` was derived from. + // `profile_used_guid` specifies the profile used to build + // the accepted suggestion. void OnDidAcceptAutofillOnTyping( FieldGlobalId field_global_id, const std::u16string& value, - FieldType field_type_used_to_build_suggestion); + FieldType field_type_used_to_build_suggestion, + const std::string profile_used_guid); void LogAutofillAddressOnTypingCorrectnessMetrics(const FormStructure& form); protected: @@ -96,11 +104,20 @@ // All profile categories for which the user has accepted at least one // suggestion. DenseSet<AutofillProfileRecordTypeCategory> profile_categories_filled_; - // Defines fields where `SuggestionType::kAddressEntryOnTyping` - // suggestions were shown. `FieldTypeSet` is used to emit acceptance metrics - // per `FieldType` used when building the suggestion shown. + // For fields where `SuggestionType::kAddressEntryOnTyping` + // suggestions were shown, store the `FieldTypeSet` used to build the + // suggestions keyed by the field global identifier. std::map<FieldGlobalId, FieldTypeSet> fields_where_autofill_on_typing_was_shown_; + // For profiles that were used to build + // `SuggestionType::kAddressEntryOnTyping` suggestions, store their last usage + // time keyed by the profile identifier. + std::map<std::string, base::TimeDelta> + autofill_on_typing_suggestion_profile_last_used_time_per_guid_; + // Stores the identifiers of those profiles that were used to build + // `SuggestionType::kAddressEntryOnTyping` suggestions and were later + // accepted. + std::set<std::string> autofill_on_typing_suggestion_accepted_profile_used_; // For fields where `SuggestionType::kAddressEntryOnTyping` suggestions were // accepted, stored the filled value. This is used later // for correctness metrics emission.
diff --git a/components/autofill/core/browser/metrics/form_events/address_form_event_logger_unittest.cc b/components/autofill/core/browser/metrics/form_events/address_form_event_logger_unittest.cc index 3233d83..cf6447a1 100644 --- a/components/autofill/core/browser/metrics/form_events/address_form_event_logger_unittest.cc +++ b/components/autofill/core/browser/metrics/form_events/address_form_event_logger_unittest.cc
@@ -248,11 +248,14 @@ // `Suggestion::field_by_field_filling_type_used` property for each output // suggestion. std::vector<Suggestion> BuildAutofillOnTypingSuggestions( - FieldTypeSet field_types_used) { + FieldTypeSet field_types_used, + std::string profile_guid) { std::vector<Suggestion> suggestions; for (FieldType field_type : field_types_used) { suggestions.emplace_back(SuggestionType::kAddressEntryOnTyping); suggestions.back().field_by_field_filling_type_used = field_type; + suggestions.back().payload = + Suggestion::AutofillProfilePayload(Suggestion::Guid(profile_guid)); } return suggestions; } @@ -261,6 +264,12 @@ TEST_F(AutofillAddressOnTypingMetricsTest, EmitMetrics) { base::HistogramTester histogram_tester_; FormData form = test::GetFormData({.fields = {{}, {}, {}}}); + AutofillProfile profile = test::GetFullProfile(); + const base::Time now = base::Time::Now(); + constexpr size_t kProfileLastUsedInDays = 2u; + profile.set_use_date(now - base::Days(kProfileLastUsedInDays)); + personal_data().address_data_manager().AddProfile(profile); + // Simulate that the autofill manager has seen this form on page load. SeeForm(form); static constexpr DenseSet<SuggestionType> kShownSuggestionTypes = { @@ -268,13 +277,13 @@ SuggestionType::kManageAddress}; // See, accept and do not correct the first suggestion. - autofill_client().SetAutofillSuggestions( - BuildAutofillOnTypingSuggestions({NAME_FULL})); + autofill_client().SetAutofillSuggestions(BuildAutofillOnTypingSuggestions( + {NAME_FULL}, /*profile_guid=*/profile.guid())); autofill_manager().DidShowSuggestions(kShownSuggestionTypes, form, form.fields()[0].global_id()); const std::u16string filled_value = u"Jon snow"; autofill_manager().OnDidFillAddressOnTypingSuggestion( - form.fields()[0].global_id(), filled_value, NAME_FULL); + form.fields()[0].global_id(), filled_value, NAME_FULL, profile.guid()); std::vector<FormFieldData> form_fields = form.ExtractFields(); // Note that the first field value has the same as the one from the first // suggestion. @@ -283,17 +292,17 @@ // Only see second suggestion. autofill_client().SetAutofillSuggestions( - BuildAutofillOnTypingSuggestions({NAME_FIRST})); + BuildAutofillOnTypingSuggestions({NAME_FIRST}, profile.guid())); autofill_manager().DidShowSuggestions(kShownSuggestionTypes, form, form.fields()[1].global_id()); // See, accept and edit the third suggestion. autofill_client().SetAutofillSuggestions( - BuildAutofillOnTypingSuggestions({NAME_FULL})); + BuildAutofillOnTypingSuggestions({NAME_FULL}, profile.guid())); autofill_manager().DidShowSuggestions(kShownSuggestionTypes, form, form.fields()[2].global_id()); autofill_manager().OnDidFillAddressOnTypingSuggestion( - form.fields()[2].global_id(), filled_value, NAME_FULL); + form.fields()[2].global_id(), filled_value, NAME_FULL, profile.guid()); form_fields = form.ExtractFields(); // Set the third field value as something different from what was autofilled, // simulating a correction. @@ -317,6 +326,12 @@ EXPECT_THAT(histogram_tester_.GetAllSamples( "Autofill.EditedAutofilledFieldAtSubmission.AddressOnTyping"), BucketsAre(base::Bucket(false, 1), base::Bucket(true, 1))); + histogram_tester_.ExpectUniqueSample( + "Autofill.AddressSuggestionOnTypingShown.DaysSinceLastUse.Profile", + kProfileLastUsedInDays, 1); + histogram_tester_.ExpectUniqueSample( + "Autofill.AddressSuggestionOnTypingAccepted.DaysSinceLastUse.Profile", + kProfileLastUsedInDays, 1); } } // namespace autofill::autofill_metrics
diff --git a/components/autofill/core/browser/studies/autofill_experiments.cc b/components/autofill/core/browser/studies/autofill_experiments.cc index 666d6bc4..ed1992a 100644 --- a/components/autofill/core/browser/studies/autofill_experiments.cc +++ b/components/autofill/core/browser/studies/autofill_experiments.cc
@@ -166,22 +166,19 @@ return false; } - // With `AutofillDecoupleAddressPaymentSyncSettings`, the address and payment - // sync settings become independent. However, since address information is - // uploaded during the server card saving flow, credit card upload is not - // available when address sync is disabled. - // Before address sync is available in transport mode, server card save is + // In sync settings, address and payment toggles are independent. However, + // since address information is uploaded during the server card saving flow, + // credit card upload is not available when address sync is disabled. + // Before address sync was available in transport mode, server card save was // offered in transport mode regardless of the setting. (The sync API exposes // the kAutofill type as disabled in this case.) // TODO(crbug.com/40066949): Simplify once IsSyncFeatureActive() is deleted // from the codebase. - bool addresses_in_transport_mode = base::FeatureList::IsEnabled( - syncer::kSyncEnableContactInfoDataTypeInTransportMode); + bool addresses_in_transport_mode = true; #if BUILDFLAG(ENABLE_DICE_SUPPORT) // Dice users don't have addresses in transport mode until they went through // the explicit signin flow. addresses_in_transport_mode = - addresses_in_transport_mode && pref_service.GetBoolean(::prefs::kExplicitBrowserSignin); #endif bool syncing_or_addresses_in_transport_mode =
diff --git a/components/autofill/core/browser/studies/autofill_experiments_unittest.cc b/components/autofill/core/browser/studies/autofill_experiments_unittest.cc index 87a7d16..740d525 100644 --- a/components/autofill/core/browser/studies/autofill_experiments_unittest.cc +++ b/components/autofill/core/browser/studies/autofill_experiments_unittest.cc
@@ -235,8 +235,6 @@ // is among the UserSelectableTypes. TEST_F(AutofillExperimentsTest, IsCardUploadEnabled_TransportWithAddresses_AutofillSelected) { - base::test::ScopedFeatureList feature{ - syncer::kSyncEnableContactInfoDataTypeInTransportMode}; #if BUILDFLAG(ENABLE_DICE_SUPPORT) // Migrate Dice users. pref_service_.SetBoolean(::prefs::kExplicitBrowserSignin, true); @@ -252,8 +250,6 @@ } TEST_F(AutofillExperimentsTest, IsCardUploadEnabled_TransportWithAddresses_AutofillDisabled) { - base::test::ScopedFeatureList features{ - syncer::kSyncEnableContactInfoDataTypeInTransportMode}; #if BUILDFLAG(ENABLE_DICE_SUPPORT) // Migrate Dice users. pref_service_.SetBoolean(::prefs::kExplicitBrowserSignin, true); @@ -275,8 +271,6 @@ TEST_F( AutofillExperimentsTest, IsCardUploadEnabled_TransportWithAddresses_AutofillDisabled_DiceMigration) { - base::test::ScopedFeatureList feature{ - syncer::kSyncEnableContactInfoDataTypeInTransportMode}; // Dice user not migrated to explicit signin. ASSERT_FALSE(pref_service_.GetBoolean(::prefs::kExplicitBrowserSignin)); sync_service_.SetSignedIn(signin::ConsentLevel::kSignin); @@ -290,37 +284,6 @@ #endif // BUILDFLAG(ENABLE_DICE_SUPPORT) -// Tests that for transport mode users, when CONTACT_INFO is unavailable, credit -// card upload is offered independently of the kAutofill (address autofill + -// autocomplete) UserSelectableType. -TEST_F(AutofillExperimentsTest, - IsCardUploadEnabled_TransportWithoutAddresses_AutofillSelected) { - base::test::ScopedFeatureList feature; - feature.InitAndDisableFeature( - syncer::kSyncEnableContactInfoDataTypeInTransportMode); - sync_service_.SetSignedIn(signin::ConsentLevel::kSignin); - sync_service_.GetUserSettings()->SetSelectedTypes( - /*sync_everything=*/false, - /*types=*/{syncer::UserSelectableType::kAutofill, - syncer::UserSelectableType::kPayments}); - EXPECT_TRUE( - IsCreditCardUploadEnabled(AutofillMetrics::PaymentsSigninState:: - kSignedInAndWalletSyncTransportEnabled)); -} -TEST_F(AutofillExperimentsTest, - IsCardUploadEnabled_TransportWithoutAddresses_AutofillDisabled) { - base::test::ScopedFeatureList features; - features.InitAndDisableFeature( - syncer::kSyncEnableContactInfoDataTypeInTransportMode); - sync_service_.SetSignedIn(signin::ConsentLevel::kSignin); - sync_service_.GetUserSettings()->SetSelectedTypes( - /*sync_everything=*/false, - /*types=*/{syncer::UserSelectableType::kPayments}); - EXPECT_TRUE( - IsCreditCardUploadEnabled(AutofillMetrics::PaymentsSigninState:: - kSignedInAndWalletSyncTransportEnabled)); -} - TEST_F(AutofillExperimentsTest, IsCardUploadEnabled_SyncServiceUsingExplicitPassphrase) { sync_service_.SetIsUsingExplicitPassphrase(true);
diff --git a/components/autofill/core/browser/suggestions/addresses/address_suggestion_generator.cc b/components/autofill/core/browser/suggestions/addresses/address_suggestion_generator.cc index bbb98093..6abeee3b 100644 --- a/components/autofill/core/browser/suggestions/addresses/address_suggestion_generator.cc +++ b/components/autofill/core/browser/suggestions/addresses/address_suggestion_generator.cc
@@ -27,7 +27,7 @@ #include "components/autofill/core/browser/data_manager/personal_data_manager.h" #include "components/autofill/core/browser/data_model/autofill_profile.h" #include "components/autofill/core/browser/data_model/autofill_profile_comparator.h" -#include "components/autofill/core/browser/data_model/borrowed_transliterator.h" +#include "components/autofill/core/browser/data_model/transliterator.h" #include "components/autofill/core/browser/data_quality/autofill_data_util.h" #include "components/autofill/core/browser/field_type_utils.h" #include "components/autofill/core/browser/field_types.h"
diff --git a/components/autofill/core/browser/ui/autofill_external_delegate.cc b/components/autofill/core/browser/ui/autofill_external_delegate.cc index 96b2b34..a592cff 100644 --- a/components/autofill/core/browser/ui/autofill_external_delegate.cc +++ b/components/autofill/core/browser/ui/autofill_external_delegate.cc
@@ -1137,7 +1137,8 @@ } else if (suggestion.type == SuggestionType::kAddressEntryOnTyping) { manager_->OnDidFillAddressOnTypingSuggestion( query_field_.global_id(), filling_value, - *suggestion.field_by_field_filling_type_used); + *suggestion.field_by_field_filling_type_used, + /*profile_last_time_used*/ profile.guid()); } } }
diff --git a/components/autofill/core/browser/ui/autofill_external_delegate_unittest.cc b/components/autofill/core/browser/ui/autofill_external_delegate_unittest.cc index 9c7fc43..4fd5ed5 100644 --- a/components/autofill/core/browser/ui/autofill_external_delegate_unittest.cc +++ b/components/autofill/core/browser/ui/autofill_external_delegate_unittest.cc
@@ -21,6 +21,7 @@ #include "base/test/metrics/user_action_tester.h" #include "base/test/scoped_feature_list.h" #include "base/test/task_environment.h" +#include "base/time/time.h" #include "base/uuid.h" #include "build/build_config.h" #include "components/autofill/core/browser/autofill_trigger_source.h" @@ -298,7 +299,10 @@ (override)); MOCK_METHOD(void, OnDidFillAddressOnTypingSuggestion, - (const FieldGlobalId&, const std::u16string&, FieldType), + (const FieldGlobalId&, + const std::u16string&, + FieldType, + const std::string&), (override)); private: @@ -2418,7 +2422,7 @@ OnDidFillAddressOnTypingSuggestion( IsQueriedFieldId(), profile.GetRawInfo(*suggestion.field_by_field_filling_type_used), - NAME_FULL)); + NAME_FULL, profile.guid())); external_delegate().DidAcceptSuggestion(suggestion, SuggestionPosition{.row = 0});
diff --git a/components/autofill/core/browser/ui/country_combobox_model.cc b/components/autofill/core/browser/ui/country_combobox_model.cc index 99d0387..f18d92df8 100644 --- a/components/autofill/core/browser/ui/country_combobox_model.cc +++ b/components/autofill/core/browser/ui/country_combobox_model.cc
@@ -26,15 +26,14 @@ CountryComboboxModel::~CountryComboboxModel() = default; void CountryComboboxModel::SetCountries( - const PersonalDataManager& manager, + const AddressDataManager& adm, const base::RepeatingCallback<bool(const std::string&)>& filter, const std::string& app_locale) { countries_.clear(); // Insert the default country at the top as well as in the ordered list. - std::string default_country_code = manager.address_data_manager() - .GetDefaultCountryCodeForNewAddress() - .value(); + std::string default_country_code = + adm.GetDefaultCountryCodeForNewAddress().value(); DCHECK(!default_country_code.empty()); if (filter.is_null() || filter.Run(default_country_code)) {
diff --git a/components/autofill/core/browser/ui/country_combobox_model.h b/components/autofill/core/browser/ui/country_combobox_model.h index 0c359f11..13cadd45 100644 --- a/components/autofill/core/browser/ui/country_combobox_model.h +++ b/components/autofill/core/browser/ui/country_combobox_model.h
@@ -14,8 +14,8 @@ namespace autofill { +class AddressDataManager; class AutofillCountry; -class PersonalDataManager; // A model for countries to be used to enter addresses. class CountryComboboxModel : public ui::ComboboxModel { @@ -34,7 +34,7 @@ // Empty callback can be used to retain all countries. // |manager| determines the default choice. void SetCountries( - const PersonalDataManager& manager, + const AddressDataManager& adm, const base::RepeatingCallback<bool(const std::string&)>& filter, const std::string& app_locale);
diff --git a/components/autofill/core/browser/ui/country_combobox_model_unittest.cc b/components/autofill/core/browser/ui/country_combobox_model_unittest.cc index 318f6659..686bcde 100644 --- a/components/autofill/core/browser/ui/country_combobox_model_unittest.cc +++ b/components/autofill/core/browser/ui/country_combobox_model_unittest.cc
@@ -6,7 +6,7 @@ #include <memory> -#include "components/autofill/core/browser/data_manager/test_personal_data_manager.h" +#include "components/autofill/core/browser/data_manager/addresses/test_address_data_manager.h" #include "components/autofill/core/browser/geo/autofill_country.h" #include "components/autofill/core/browser/test_utils/autofill_test_utils.h" #include "components/prefs/pref_service.h" @@ -21,29 +21,26 @@ public: CountryComboboxModelTest() : pref_service_(autofill::test::PrefServiceForTesting()) { - manager_.SetPrefService(pref_service_.get()); + adm_.SetPrefService(pref_service_.get()); model_ = std::make_unique<CountryComboboxModel>(); model_->SetCountries( - manager_, base::RepeatingCallback<bool(const std::string&)>(), "en-US"); + adm(), base::RepeatingCallback<bool(const std::string&)>(), "en-US"); } - void TearDown() override { manager_.SetPrefService(nullptr); } + void TearDown() override { adm_.SetPrefService(nullptr); } - TestPersonalDataManager* manager() { return &manager_; } + TestAddressDataManager& adm() { return adm_; } CountryComboboxModel* model() { return model_.get(); } private: - TestPersonalDataManager manager_; + TestAddressDataManager adm_; std::unique_ptr<PrefService> pref_service_; std::unique_ptr<CountryComboboxModel> model_; }; TEST_F(CountryComboboxModelTest, DefaultCountryCode) { std::string default_country = model()->GetDefaultCountryCode(); - EXPECT_EQ(manager() - ->address_data_manager() - .GetDefaultCountryCodeForNewAddress() - .value(), + EXPECT_EQ(adm().GetDefaultCountryCodeForNewAddress().value(), default_country); AutofillCountry country(default_country, "en-US");
diff --git a/components/autofill/core/browser/webdata/addresses/address_autofill_table.cc b/components/autofill/core/browser/webdata/addresses/address_autofill_table.cc index 4107eb76..d8a12c28 100644 --- a/components/autofill/core/browser/webdata/addresses/address_autofill_table.cc +++ b/components/autofill/core/browser/webdata/addresses/address_autofill_table.cc
@@ -20,7 +20,7 @@ #include "base/time/time.h" #include "base/uuid.h" #include "components/autofill/core/browser/data_model/autofill_profile.h" -#include "components/autofill/core/browser/data_model/autofill_structured_address_utils.h" +#include "components/autofill/core/browser/data_model/transliterator.h" #include "components/autofill/core/browser/field_type_utils.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/webdata/autofill_table_utils.h" @@ -395,8 +395,7 @@ if (IsAlternativeNameType(type)) { if (base::FeatureList::IsEnabled( features::kAutofillSupportPhoneticNameForJP)) { - value = TransliterateAlternativeName( - value, TransliterationId::kKatakanaToHiragana); + value = TransliterateAlternativeName(value); } else { continue; } @@ -821,19 +820,19 @@ } bool AddressAutofillTable::MigrateToVersion88AddNewNameColumns() { - for (std::string_view column : - std::vector<std::string_view>{"honorific_prefix", kFirstLastName, - kConjunctionLastName, kSecondLastName}) { + for (std::string_view column : std::to_array<std::string_view>( + {"honorific_prefix", kFirstLastName, kConjunctionLastName, + kSecondLastName})) { if (!AddColumnIfNotExists(db(), kAutofillProfileNamesTable, column, "VARCHAR")) { return false; } } - for (std::string_view column : std::vector<std::string_view>{ - "honorific_prefix_status", kFirstNameStatus, kMiddleNameStatus, - kLastNameStatus, kFirstLastNameStatus, kConjunctionLastNameStatus, - kSecondLastNameStatus, kFullNameStatus}) { + for (std::string_view column : std::to_array<std::string_view>( + {"honorific_prefix_status", kFirstNameStatus, kMiddleNameStatus, + kLastNameStatus, kFirstLastNameStatus, kConjunctionLastNameStatus, + kSecondLastNameStatus, kFullNameStatus})) { // The default value of 0 corresponds to the verification status // |kNoStatus|. if (!AddColumnIfNotExists(db(), kAutofillProfileNamesTable, column,
diff --git a/components/autofill/core/common/autofill_features.cc b/components/autofill/core/common/autofill_features.cc index e988c38..b205dcde 100644 --- a/components/autofill/core/common/autofill_features.cc +++ b/components/autofill/core/common/autofill_features.cc
@@ -425,6 +425,12 @@ "AutofillUsePLAddressModel", base::FEATURE_DISABLED_BY_DEFAULT); +// When enabled, the form field parser won't try to match other attributes if +// any of the negative patterns matched. +BASE_FEATURE(kAutofillUseNegativePatternForAllAttributes, + "AutofillUseNegativePatternForAllAttributes", + base::FEATURE_DISABLED_BY_DEFAULT); + // When enabled, all behaviours related to the on-device machine learning // model for field type predictions will be guarded. // TODO(crbug.com/40276177): Remove when launched.
diff --git a/components/autofill/core/common/autofill_features.h b/components/autofill/core/common/autofill_features.h index e3e5e00..e85870b 100644 --- a/components/autofill/core/common/autofill_features.h +++ b/components/autofill/core/common/autofill_features.h
@@ -138,6 +138,8 @@ BASE_DECLARE_FEATURE(kAutofillUseNLAddressModel); COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillUsePLAddressModel); +COMPONENT_EXPORT(AUTOFILL) +BASE_DECLARE_FEATURE(kAutofillUseNegativePatternForAllAttributes); COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillModelPredictions); COMPONENT_EXPORT(AUTOFILL) extern const base::FeatureParam<bool> kAutofillModelPredictionsAreActive;
diff --git a/components/contextual_search/core/DEPS b/components/contextual_search/core/DEPS index 126ba78..dc5f1ff0 100644 --- a/components/contextual_search/core/DEPS +++ b/components/contextual_search/core/DEPS
@@ -1,4 +1,5 @@ include_rules = [ + "+components/language_detection/core", "+components/metrics", "+components/search_engines", "+components/translate/core/common",
diff --git a/components/contextual_search/core/browser/BUILD.gn b/components/contextual_search/core/browser/BUILD.gn index cb225ef4..db73101 100644 --- a/components/contextual_search/core/browser/BUILD.gn +++ b/components/contextual_search/core/browser/BUILD.gn
@@ -24,8 +24,8 @@ "//base", "//components/contextual_search:buildflags", "//components/contextual_search/core/proto:client_discourse_context_proto", + "//components/language_detection/core", "//components/search_engines", - "//components/translate/core/common", "//components/translate/core/language_detection", "//components/variations", "//components/variations/net", @@ -56,6 +56,7 @@ "//base", "//base/test:test_support", "//components/contextual_search/core/proto:client_discourse_context_proto", + "//components/language_detection/core", "//components/search_engines", "//components/search_engines:test_support", "//components/variations:test_support",
diff --git a/components/contextual_search/core/browser/contextual_search_context.cc b/components/contextual_search/core/browser/contextual_search_context.cc index 5a82139c4..9abd296 100644 --- a/components/contextual_search/core/browser/contextual_search_context.cc +++ b/components/contextual_search/core/browser/contextual_search_context.cc
@@ -4,7 +4,7 @@ #include "components/contextual_search/core/browser/contextual_search_context.h" -#include "components/translate/core/common/translate_constants.h" +#include "components/language_detection/core/constants.h" #include "components/translate/core/language_detection/language_detection_util.h" ContextualSearchContext::ContextualSearchContext() = default; @@ -64,8 +64,10 @@ /*html_lang=*/std::string(), contents, &model_detected_language, &is_model_reliable, model_reliability_score); // Make sure we return an empty string when unreliable or an unknown result. - if (!is_model_reliable || language == translate::kUnknownLanguageCode) + if (!is_model_reliable || + language == language_detection::kUnknownLanguageCode) { language = ""; + } return language; }
diff --git a/components/password_manager/core/browser/password_store/fake_password_store_backend.cc b/components/password_manager/core/browser/password_store/fake_password_store_backend.cc index dbba09c7..e7f2d33 100644 --- a/components/password_manager/core/browser/password_store/fake_password_store_backend.cc +++ b/components/password_manager/core/browser/password_store/fake_password_store_backend.cc
@@ -132,13 +132,6 @@ std::move(callback)); } -void FakePasswordStoreBackend::GetAllLoginsForAccountAsync( - std::string account, - LoginsOrErrorReply callback) { - CHECK(!account.empty()); - GetAllLoginsAsync(std::move(callback)); -} - void FakePasswordStoreBackend::FillMatchingLoginsAsync( LoginsOrErrorReply callback, bool include_psl,
diff --git a/components/password_manager/core/browser/password_store/fake_password_store_backend.h b/components/password_manager/core/browser/password_store/fake_password_store_backend.h index 6fda0a9..08c2de6 100644 --- a/components/password_manager/core/browser/password_store/fake_password_store_backend.h +++ b/components/password_manager/core/browser/password_store/fake_password_store_backend.h
@@ -69,8 +69,6 @@ void GetAllLoginsWithAffiliationAndBrandingAsync( LoginsOrErrorReply callback) override; void GetAutofillableLoginsAsync(LoginsOrErrorReply callback) override; - void GetAllLoginsForAccountAsync(std::string account, - LoginsOrErrorReply callback) override; void FillMatchingLoginsAsync( LoginsOrErrorReply callback, bool include_psl,
diff --git a/components/password_manager/core/browser/password_store/mock_password_store_backend.h b/components/password_manager/core/browser/password_store/mock_password_store_backend.h index fc37dee3..838d5ec 100644 --- a/components/password_manager/core/browser/password_store/mock_password_store_backend.h +++ b/components/password_manager/core/browser/password_store/mock_password_store_backend.h
@@ -46,10 +46,6 @@ (LoginsOrErrorReply callback), (override)); MOCK_METHOD(void, - GetAllLoginsForAccountAsync, - (std::string, LoginsOrErrorReply callback), - (override)); - MOCK_METHOD(void, FillMatchingLoginsAsync, (LoginsOrErrorReply callback, bool include_psl,
diff --git a/components/password_manager/core/browser/password_store/password_store_backend.h b/components/password_manager/core/browser/password_store/password_store_backend.h index 6f0e13b..0df4da0 100644 --- a/components/password_manager/core/browser/password_store/password_store_backend.h +++ b/components/password_manager/core/browser/password_store/password_store_backend.h
@@ -83,15 +83,6 @@ // called on the main sequence. virtual void GetAutofillableLoginsAsync(LoginsOrErrorReply callback) = 0; - // Returns the complete list of PasswordForms (regardless of their blocklist - // status) saved in the given sync |account|. The passed account should be a - // current or former syncing account, otherwise |callback| will be - // called with an error result. Callback is called on the main sequence. - // TODO(crbug.com/40833594): Clean up/refactor to avoid having methods - // introduced for a specific backend in this interface. - virtual void GetAllLoginsForAccountAsync(std::string account, - LoginsOrErrorReply callback) = 0; - // Returns all PasswordForms with the same signon_realm as a form in |forms|. // If |include_psl|==true, the PSL-matched forms are also included. // If multiple forms are given, those will be concatenated.
diff --git a/components/password_manager/core/browser/password_store/password_store_built_in_backend.cc b/components/password_manager/core/browser/password_store/password_store_built_in_backend.cc index 259b354..fc6b350 100644 --- a/components/password_manager/core/browser/password_store/password_store_built_in_backend.cc +++ b/components/password_manager/core/browser/password_store/password_store_built_in_backend.cc
@@ -270,12 +270,6 @@ .Then(std::move(callback))); } -void PasswordStoreBuiltInBackend::GetAllLoginsForAccountAsync( - std::string account, - LoginsOrErrorReply callback) { - NOTREACHED(); -} - void PasswordStoreBuiltInBackend::FillMatchingLoginsAsync( LoginsOrErrorReply callback, bool include_psl,
diff --git a/components/password_manager/core/browser/password_store/password_store_built_in_backend.h b/components/password_manager/core/browser/password_store/password_store_built_in_backend.h index abba6f38..ab8bc21 100644 --- a/components/password_manager/core/browser/password_store/password_store_built_in_backend.h +++ b/components/password_manager/core/browser/password_store/password_store_built_in_backend.h
@@ -73,8 +73,6 @@ void GetAllLoginsWithAffiliationAndBrandingAsync( LoginsOrErrorReply callback) override; void GetAutofillableLoginsAsync(LoginsOrErrorReply callback) override; - void GetAllLoginsForAccountAsync(std::string account, - LoginsOrErrorReply callback) override; void FillMatchingLoginsAsync( LoginsOrErrorReply callback, bool include_psl,
diff --git a/components/permissions/BUILD.gn b/components/permissions/BUILD.gn index e088d1f..8e3a821 100644 --- a/components/permissions/BUILD.gn +++ b/components/permissions/BUILD.gn
@@ -67,6 +67,8 @@ "contexts/webxr_permission_context.h", "contexts/window_management_permission_context.cc", "contexts/window_management_permission_context.h", + "embedded_permission_prompt_flow_model.cc", + "embedded_permission_prompt_flow_model.h", "notifications_engagement_service.cc", "notifications_engagement_service.h", "object_permission_context_base.cc",
diff --git a/components/permissions/embedded_permission_prompt_flow_model.cc b/components/permissions/embedded_permission_prompt_flow_model.cc new file mode 100644 index 0000000..051066f --- /dev/null +++ b/components/permissions/embedded_permission_prompt_flow_model.cc
@@ -0,0 +1,135 @@ +// Copyright 2025 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/permissions/embedded_permission_prompt_flow_model.h" + +#include "base/memory/raw_ptr.h" +#include "components/content_settings/core/common/content_settings.h" +#include "components/content_settings/core/common/content_settings_types.h" +#include "components/permissions/permissions_client.h" +#include "content/public/browser/web_contents.h" + +namespace { + +using content_settings::SettingSource; + +bool CanGroupVariants( + permissions::EmbeddedPermissionPromptFlowModel::Variant a, + permissions::EmbeddedPermissionPromptFlowModel::Variant b) { + // Ask and PreviouslyDenied are a special case and can be grouped together. + if ((a == permissions::EmbeddedPermissionPromptFlowModel::Variant:: + kPreviouslyDenied && + b == permissions::EmbeddedPermissionPromptFlowModel::Variant::kAsk) || + (a == permissions::EmbeddedPermissionPromptFlowModel::Variant::kAsk && + b == permissions::EmbeddedPermissionPromptFlowModel::Variant:: + kPreviouslyDenied)) { + return true; + } + + return (a == b); +} + +} // namespace + +namespace permissions { + +EmbeddedPermissionPromptFlowModel::EmbeddedPermissionPromptFlowModel( + content::WebContents* web_contents, + PermissionPrompt::Delegate* delegate) + : delegate_(delegate), web_contents_(web_contents) {} +EmbeddedPermissionPromptFlowModel::~EmbeddedPermissionPromptFlowModel() = + default; + +EmbeddedPermissionPromptFlowModel::Variant +EmbeddedPermissionPromptFlowModel::DeterminePromptVariant( + ContentSetting setting, + const content_settings::SettingInfo& info, + ContentSettingsType type) { + // If the administrator blocked the permission, there is nothing the user can + // do. Presenting them with a different screen in unproductive. + if (PermissionsClient::Get()->IsPermissionBlockedByDevicePolicy( + web_contents(), setting, info, type)) { + return Variant::kAdministratorDenied; + } + + // Determine if we can directly show one of the OS views. The "System + // Settings" view is higher priority then all the other remaining options, + // whereas the "OS Prompt" view is only higher priority then the views that + // are associated with a site-level allowed state. + // TODO(crbug.com/40275129): Handle going to Windows settings. + if (PermissionsClient::Get()->IsSystemDenied(type)) { + return Variant::kOsSystemSettings; + } + + if (setting == CONTENT_SETTING_ALLOW && + PermissionsClient::Get()->CanPromptSystemPermission(type)) { + return Variant::kOsPrompt; + } + + if (PermissionsClient::Get()->IsPermissionAllowedByDevicePolicy( + web_contents(), setting, info, type)) { + return Variant::kAdministratorGranted; + } + + switch (setting) { + case CONTENT_SETTING_ASK: + return Variant::kAsk; + case CONTENT_SETTING_ALLOW: + return Variant::kPreviouslyGranted; + case CONTENT_SETTING_BLOCK: + return Variant::kPreviouslyDenied; + default: + break; + } + + return Variant::kUninitialized; +} + +void EmbeddedPermissionPromptFlowModel::PrioritizeAndMergeNewVariant( + EmbeddedPermissionPromptFlowModel::Variant new_variant, + ContentSettingsType new_type) { + // The new variant can be grouped with the already existing one. + if (CanGroupVariants(prompt_variant_, new_variant)) { + prompt_types_.insert(new_type); + prompt_variant_ = std::max(prompt_variant_, new_variant); + return; + } + + // The existing variant is higher priority than the new one. + if (prompt_variant_ > new_variant) { + return; + } + + // The new variant has higher priority than the existing one. + prompt_types_.clear(); + prompt_types_.insert(new_type); + prompt_variant_ = new_variant; +} + +void EmbeddedPermissionPromptFlowModel::CalculateCurrentVariant() { + auto* map = PermissionsClient::Get()->GetSettingsMap( + web_contents()->GetBrowserContext()); + content_settings::SettingInfo info; + + for (const auto& request : delegate_->Requests()) { + ContentSettingsType type = request->GetContentSettingsType(); + ContentSetting setting = + map->GetContentSetting(delegate_->GetRequestingOrigin(), + delegate_->GetEmbeddingOrigin(), type, &info); + Variant current_request_variant = + DeterminePromptVariant(setting, info, type); + PrioritizeAndMergeNewVariant(current_request_variant, type); + } + + if (requests_.size() != prompt_types_.size()) { + const auto& requests = delegate_->Requests(); + for (PermissionRequest* request : requests) { + if (prompt_types_.contains(request->GetContentSettingsType())) { + requests_.push_back(request); + } + } + } +} + +} // namespace permissions
diff --git a/components/permissions/embedded_permission_prompt_flow_model.h b/components/permissions/embedded_permission_prompt_flow_model.h new file mode 100644 index 0000000..00c35d9 --- /dev/null +++ b/components/permissions/embedded_permission_prompt_flow_model.h
@@ -0,0 +1,111 @@ +// Copyright 2025 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_PERMISSIONS_EMBEDDED_PERMISSION_PROMPT_FLOW_MODEL_H_ +#define COMPONENTS_PERMISSIONS_EMBEDDED_PERMISSION_PROMPT_FLOW_MODEL_H_ + +#include <optional> + +#include "base/memory/raw_ptr.h" +#include "base/memory/weak_ptr.h" +#include "components/content_settings/core/common/content_settings_types.h" +#include "components/permissions/permission_prompt.h" +#include "components/permissions/permission_request.h" +#include "components/permissions/request_type.h" + +namespace content { +class WebContents; +} // namespace content + +namespace permissions { + +// This class figures out how to calculate the right prompt variant, looking at +// the ongoing permission requests, content settings, and system +// settings/policies. The later `*_Permission_Prompt` class will use this shared +// logic to find the correct screen to show the user. +class EmbeddedPermissionPromptFlowModel { + public: + EmbeddedPermissionPromptFlowModel(content::WebContents* web_contents, + PermissionPrompt::Delegate* delegate); + ~EmbeddedPermissionPromptFlowModel(); + EmbeddedPermissionPromptFlowModel(const EmbeddedPermissionPromptFlowModel&) = + delete; + EmbeddedPermissionPromptFlowModel& operator=( + const EmbeddedPermissionPromptFlowModel&) = delete; + + // Prompt views shown after the user clicks on the embedded permission prompt. + // The values represent the priority of each variant, higher number means + // higher priority. + enum class Variant { + // Default when conditions are not met to show any of the permission views. + kUninitialized = 0, + // Informs the user that the permission was allowed by their administrator. + kAdministratorGranted = 1, + // Permission prompt that informs the user they already granted permission. + // Offers additional options to modify the permission decision. + kPreviouslyGranted = 2, + // Informs the user that Chrome needs permission from the OS level, in order + // for the site to be able to access a permission. + kOsPrompt = 3, + // Permission prompt that asks the user for site-level permission. + kAsk = 4, + // Permission prompt that additionally informs the user that they have + // previously denied permission to the site. May offer different options + // (buttons) to the site-level prompt |kAsk|. + kPreviouslyDenied = 5, + // Informs the user that they need to go to OS system settings to grant + // access to Chrome. + kOsSystemSettings = 6, + // Informs the user that the permission was denied by their administrator. + kAdministratorDenied = 7, + }; + + // Calculate the variant of given type based on the current state of browser + // (content settings) and device (settings and policies). + Variant DeterminePromptVariant(ContentSetting setting, + const content_settings::SettingInfo& info, + ContentSettingsType type); + + // Compare current variant with the new one based on the prioty order, + // grouping if necessary. + void PrioritizeAndMergeNewVariant(Variant new_variant, + ContentSettingsType type); + + content::WebContents* web_contents() const { return web_contents_; } + + // Calculate the current prompt variant for the ongoing permission requests. + void CalculateCurrentVariant(); + + Variant prompt_variant() const { return prompt_variant_; } + + const std::set<ContentSettingsType>& prompt_types() const { + return prompt_types_; + } + + const std::vector<raw_ptr<PermissionRequest, VectorExperimental>>& requests() + const { + return requests_; + } + + void Clear() { + requests_.clear(); + prompt_variant_ = Variant::kUninitialized; + prompt_types_.clear(); + } + + private: + Variant prompt_variant_ = Variant::kUninitialized; + raw_ptr<PermissionPrompt::Delegate> delegate_; + + std::set<ContentSettingsType> prompt_types_; + std::vector<raw_ptr<PermissionRequest, VectorExperimental>> requests_; + + raw_ptr<content::WebContents> web_contents_; + + base::WeakPtrFactory<EmbeddedPermissionPromptFlowModel> weak_factory_{this}; +}; + +} // namespace permissions + +#endif // COMPONENTS_PERMISSIONS_EMBEDDED_PERMISSION_PROMPT_FLOW_MODEL_H_
diff --git a/components/permissions/permissions_client.cc b/components/permissions/permissions_client.cc index 3676a19..5559009 100644 --- a/components/permissions/permissions_client.cc +++ b/components/permissions/permissions_client.cc
@@ -206,6 +206,31 @@ return false; } +bool PermissionsClient::IsPermissionAllowedByDevicePolicy( + content::WebContents* web_contents, + ContentSetting setting, + const content_settings::SettingInfo& info, + ContentSettingsType type) const { + return false; +} + +bool PermissionsClient::IsPermissionBlockedByDevicePolicy( + content::WebContents* web_contents, + ContentSetting setting, + const content_settings::SettingInfo& info, + ContentSettingsType type) const { + return false; +} + +bool PermissionsClient::IsSystemDenied(ContentSettingsType type) const { + return false; +} + +bool PermissionsClient::CanPromptSystemPermission( + ContentSettingsType type) const { + return false; +} + favicon::FaviconService* PermissionsClient::GetFaviconService( content::BrowserContext* browser_context) { return nullptr;
diff --git a/components/permissions/permissions_client.h b/components/permissions/permissions_client.h index 0397553..865b3df 100644 --- a/components/permissions/permissions_client.h +++ b/components/permissions/permissions_client.h
@@ -310,6 +310,30 @@ // capability to sites. virtual bool CanRequestDevicePermission(ContentSettingsType type) const; + // Returns true if the |type| can be blocked by device policy, for example, by + // the custodian of a supervised user. + virtual bool IsPermissionBlockedByDevicePolicy( + content::WebContents* web_contents, + ContentSetting setting, + const content_settings::SettingInfo& info, + ContentSettingsType type) const; + + // Returns true if the |type| can be allowed by device policy, for example + // admins can use the whitelist to allow device access without prompt. + virtual bool IsPermissionAllowedByDevicePolicy( + content::WebContents* web_contents, + ContentSetting setting, + const content_settings::SettingInfo& info, + ContentSettingsType type) const; + + // Returns true if the system blocks the access to the specified content type + // permission. + virtual bool IsSystemDenied(ContentSettingsType type) const; + + // Returns `true` if Chrome can request system-level permission. Returns + // `false` otherwise. + virtual bool CanPromptSystemPermission(ContentSettingsType type) const; + virtual favicon::FaviconService* GetFaviconService( content::BrowserContext* browser_context); };
diff --git a/components/plus_addresses/BUILD.gn b/components/plus_addresses/BUILD.gn index d085f3d..2174b2b 100644 --- a/components/plus_addresses/BUILD.gn +++ b/components/plus_addresses/BUILD.gn
@@ -210,6 +210,7 @@ "//base/test:test_support", "//components/affiliations/core/browser:test_support", "//components/autofill/core/browser", + "//components/autofill/core/browser:test_support", "//components/feature_engagement/public", "//components/plus_addresses/resources/strings", "//components/strings:components_strings_grit",
diff --git a/components/plus_addresses/metrics/plus_address_submission_logger.cc b/components/plus_addresses/metrics/plus_address_submission_logger.cc index 5dd50ca..04bb029 100644 --- a/components/plus_addresses/metrics/plus_address_submission_logger.cc +++ b/components/plus_addresses/metrics/plus_address_submission_logger.cc
@@ -15,7 +15,7 @@ #include "base/strings/utf_string_conversions.h" #include "base/types/cxx23_to_underlying.h" #include "components/autofill/core/browser/autofill_field.h" -#include "components/autofill/core/browser/data_model/borrowed_transliterator.h" +#include "components/autofill/core/browser/data_model/transliterator.h" #include "components/autofill/core/browser/form_structure.h" #include "components/autofill/core/browser/foundations/autofill_client.h" #include "components/autofill/core/browser/foundations/autofill_manager.h"
diff --git a/components/plus_addresses/plus_address_service_impl_unittest.cc b/components/plus_addresses/plus_address_service_impl_unittest.cc index 592842c..fd631aa5 100644 --- a/components/plus_addresses/plus_address_service_impl_unittest.cc +++ b/components/plus_addresses/plus_address_service_impl_unittest.cc
@@ -36,7 +36,6 @@ #include "components/autofill/core/common/autofill_test_utils.h" #include "components/autofill/core/common/form_data.h" #include "components/autofill/core/common/form_field_data.h" -#include "components/feature_engagement/public/feature_constants.h" #include "components/os_crypt/async/browser/test_utils.h" #include "components/plus_addresses/blocked_facets.pb.h" #include "components/plus_addresses/features.h" @@ -89,6 +88,8 @@ using base::BucketsAre; using base::test::RunOnceCallback; using test::CreatePreallocatedPlusAddress; +using test::IsSingleCreatePlusAddressSuggestion; +using test::IsSingleFillPlusAddressSuggestion; using ::testing::_; using ::testing::AllOf; using ::testing::ElementsAre; @@ -106,44 +107,6 @@ constexpr char kPlusAddress[] = "plus+remote@plus.plus"; -auto IsSingleCreatePlusAddressSuggestion() { - std::vector<std::vector<Suggestion::Text>> labels; - if constexpr (!BUILDFLAG(IS_ANDROID)) { - labels = {{Suggestion::Text(l10n_util::GetStringUTF16( - IDS_PLUS_ADDRESS_CREATE_SUGGESTION_SECONDARY_TEXT))}}; - } - return ElementsAre(AllOf( - EqualsSuggestion(SuggestionType::kCreateNewPlusAddress, - /*main_text=*/l10n_util::GetStringUTF16( - IDS_PLUS_ADDRESS_CREATE_SUGGESTION_MAIN_TEXT)), - Field(&Suggestion::icon, Suggestion::Icon::kPlusAddress), - Field(&Suggestion::iph_metadata, - Suggestion::IPHMetadata( - &feature_engagement::kIPHPlusAddressCreateSuggestionFeature)), -#if BUILDFLAG(IS_ANDROID) - Field(&Suggestion::iph_description_text, - l10n_util::GetStringUTF16( - IDS_PLUS_ADDRESS_CREATE_SUGGESTION_IPH_ANDROID)), -#endif // BUILDFLAG(IS_ANDROID) - Field(&Suggestion::labels, labels))); -} - -auto EqualsFillPlusAddressSuggestion(std::string_view address) { - std::vector<std::vector<Suggestion::Text>> labels; - if constexpr (!BUILDFLAG(IS_ANDROID)) { - labels = {{Suggestion::Text(l10n_util::GetStringUTF16( - IDS_PLUS_ADDRESS_FILL_SUGGESTION_SECONDARY_TEXT))}}; - } - return AllOf(EqualsSuggestion(SuggestionType::kFillExistingPlusAddress, - /*main_text=*/base::UTF8ToUTF16(address)), - Field(&Suggestion::icon, Suggestion::Icon::kPlusAddress), - Field(&Suggestion::labels, labels)); -} - -auto IsSingleFillPlusAddressSuggestion(std::string_view address) { - return ElementsAre(EqualsFillPlusAddressSuggestion(address)); -} - MATCHER_P(IsPreallocatedPlusAddress, address, "") { if (!arg.is_dict()) { return false;
diff --git a/components/plus_addresses/plus_address_suggestion_generator.cc b/components/plus_addresses/plus_address_suggestion_generator.cc index c4bb931..3a59ee7 100644 --- a/components/plus_addresses/plus_address_suggestion_generator.cc +++ b/components/plus_addresses/plus_address_suggestion_generator.cc
@@ -11,7 +11,7 @@ #include "base/check_deref.h" #include "base/feature_list.h" #include "base/strings/utf_string_conversions.h" -#include "components/autofill/core/browser/data_model/borrowed_transliterator.h" +#include "components/autofill/core/browser/data_model/transliterator.h" #include "components/autofill/core/browser/field_types.h" #include "components/autofill/core/browser/suggestions/suggestion.h" #include "components/autofill/core/common/form_field_data.h" @@ -212,9 +212,8 @@ std::vector<Suggestion> suggestions; suggestions.reserve(affiliated_plus_addresses.size()); - for (const std::string& affiliated_plus_addresse : - affiliated_plus_addresses) { - std::u16string plus_address = base::UTF8ToUTF16(affiliated_plus_addresse); + for (const std::string& affiliated_plus_address : affiliated_plus_addresses) { + std::u16string plus_address = base::UTF8ToUTF16(affiliated_plus_address); // Only suggest filling a plus address whose prefix matches the field's // value. if (trigger_source == kManualFallbackPlusAddresses ||
diff --git a/components/plus_addresses/plus_address_test_utils.cc b/components/plus_addresses/plus_address_test_utils.cc index 2a88eb9..3470fe0 100644 --- a/components/plus_addresses/plus_address_test_utils.cc +++ b/components/plus_addresses/plus_address_test_utils.cc
@@ -11,11 +11,22 @@ #include "base/json/values_util.h" #include "base/strings/string_util.h" #include "components/affiliations/core/browser/affiliation_utils.h" +#include "components/autofill/core/browser/suggestions/suggestion.h" +#include "components/autofill/core/browser/suggestions/suggestion_test_helpers.h" +#include "components/feature_engagement/public/feature_constants.h" +#include "components/plus_addresses/grit/plus_addresses_strings.h" #include "components/plus_addresses/plus_address_preallocator.h" #include "components/plus_addresses/plus_address_types.h" -#include "testing/gmock/include/gmock/gmock.h" +#include "ui/base/l10n/l10n_util.h" namespace plus_addresses::test { +namespace { +using autofill::EqualsSuggestion; +using autofill::Suggestion; +using autofill::SuggestionType; +using ::testing::Field; +using ::testing::Matcher; +} // namespace PlusProfile CreatePlusProfile(std::string plus_address, bool is_confirmed) { affiliations::FacetURI facet = @@ -142,4 +153,43 @@ .Set(PlusAddressPreallocator::kPlusAddressKey, std::move(address))); } +Matcher<Suggestion> EqualsFillPlusAddressSuggestion(std::string_view address) { + std::vector<std::vector<Suggestion::Text>> labels; + if constexpr (!BUILDFLAG(IS_ANDROID)) { + labels = {{Suggestion::Text(l10n_util::GetStringUTF16( + IDS_PLUS_ADDRESS_FILL_SUGGESTION_SECONDARY_TEXT))}}; + } + return AllOf(EqualsSuggestion(SuggestionType::kFillExistingPlusAddress, + /*main_text=*/base::UTF8ToUTF16(address)), + Field(&Suggestion::icon, Suggestion::Icon::kPlusAddress), + Field(&Suggestion::labels, labels)); +} + +Matcher<std::vector<Suggestion>> IsSingleCreatePlusAddressSuggestion() { + std::vector<std::vector<Suggestion::Text>> labels; + if constexpr (!BUILDFLAG(IS_ANDROID)) { + labels = {{Suggestion::Text(l10n_util::GetStringUTF16( + IDS_PLUS_ADDRESS_CREATE_SUGGESTION_SECONDARY_TEXT))}}; + } + return ElementsAre(AllOf( + EqualsSuggestion(SuggestionType::kCreateNewPlusAddress, + /*main_text=*/l10n_util::GetStringUTF16( + IDS_PLUS_ADDRESS_CREATE_SUGGESTION_MAIN_TEXT)), + Field(&Suggestion::icon, Suggestion::Icon::kPlusAddress), + Field(&Suggestion::iph_metadata, + Suggestion::IPHMetadata( + &feature_engagement::kIPHPlusAddressCreateSuggestionFeature)), +#if BUILDFLAG(IS_ANDROID) + Field(&Suggestion::iph_description_text, + l10n_util::GetStringUTF16( + IDS_PLUS_ADDRESS_CREATE_SUGGESTION_IPH_ANDROID)), +#endif // BUILDFLAG(IS_ANDROID) + Field(&Suggestion::labels, labels))); +} + +Matcher<std::vector<Suggestion>> IsSingleFillPlusAddressSuggestion( + std::string_view address) { + return ElementsAre(EqualsFillPlusAddressSuggestion(address)); +} + } // namespace plus_addresses::test
diff --git a/components/plus_addresses/plus_address_test_utils.h b/components/plus_addresses/plus_address_test_utils.h index d2a795a..0c44147f 100644 --- a/components/plus_addresses/plus_address_test_utils.h +++ b/components/plus_addresses/plus_address_test_utils.h
@@ -6,12 +6,15 @@ #define COMPONENTS_PLUS_ADDRESSES_PLUS_ADDRESS_TEST_UTILS_H_ #include <string> +#include <vector> #include "base/time/time.h" #include "base/values.h" #include "components/plus_addresses/plus_address_types.h" #include "net/test/embedded_test_server/http_request.h" #include "net/test/embedded_test_server/http_response.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" namespace plus_addresses::test { @@ -69,6 +72,18 @@ base::Time end_of_life, std::string address = "some@plus.com"); +// Matches a fill plus address suggestion. +testing::Matcher<autofill::Suggestion> EqualsFillPlusAddressSuggestion( + std::string_view address); + +// Matches a one-item vector with a standalone creation suggestion. +testing::Matcher<std::vector<autofill::Suggestion>> +IsSingleCreatePlusAddressSuggestion(); + +// Matches a one-item vector with a fill plus address suggestion. +testing::Matcher<std::vector<autofill::Suggestion>> +IsSingleFillPlusAddressSuggestion(std::string_view address); + } // namespace plus_addresses::test #endif // COMPONENTS_PLUS_ADDRESSES_PLUS_ADDRESS_TEST_UTILS_H_
diff --git a/components/policy/resources/policy_templates_es-419.xtb b/components/policy/resources/policy_templates_es-419.xtb index 0bd48ebd..e5020cd8 100644 --- a/components/policy/resources/policy_templates_es-419.xtb +++ b/components/policy/resources/policy_templates_es-419.xtb
@@ -3121,6 +3121,14 @@ Usa el carácter comodín "*" para buscar coincidencias con cero o más caracteres arbitrarios. El carácter de escape es "\", de modo que para que coincida con los caracteres "*" o "\" reales, debes colocar una "\" delante de ellos. Si no se establece esta política, en <ph name="PRODUCT_NAME" /> estarán visibles todas las Cuentas de Google del dispositivo.</translation> +<translation id="3245558640643744331">Si habilitas la política y hay conflicto con la política de la plataforma, tendrá prioridad la política de la nube. + +Si inhabilitas la política o no la estableces y hay conflicto con la política de la nube, tendrá prioridad la política de la plataforma. + +Esta política obligatoria afecta las políticas de la nube para esta máquina. + +Esta política es específica para <ph name="PRODUCT_NAME" /> y no afecta a <ph name="GOOGLE_UPDATE_NAME" /> porque son aplicaciones independientes. +<ph name="GOOGLE_UPDATE_NAME" /> tiene una política independiente con el mismo nombre.</translation> <translation id="3246606090306814894">Controlar la combinación de teclas utilizada para activar F12</translation> <translation id="3248019773260441802">Permitir que una página muestre ventanas emergentes durante su descarga</translation> <translation id="3251500716404598358">Permite configurar políticas para cambiar de navegador. @@ -3989,6 +3997,13 @@ <translation id="3897860452756794695">Usar el comportamiento nuevo de offsetParent</translation> <translation id="3898345958122666461">Desactivar NTLMv2</translation> <translation id="3898795800259311780">Permite o rechaza la captura de pantalla</translation> +<translation id="3901722051566830469">Si habilitas la política, prevalecerán las políticas asociadas a una cuenta administrada si entran en conflicto con las políticas del navegador <ph name="CHROME_ENTERPRISE_CORE_NAME" />. + +Si inhabilitas la política o no la estableces, las políticas de la nube destinadas a los usuarios tendrán la prioridad predeterminada. + +Solo pueden prevalecer políticas que hayan originado usuarios seguros. Un usuario seguro es aquél que está afiliado a la organización que administra su navegador a través de <ph name="CHROME_ENTERPRISE_CORE_NAME" />. Todas las demás políticas destinadas a los usuarios tendrán la prioridad predeterminada. + +La política puede combinarse con <ph name="POLICY_CLOUD_POLICY_OVERRIDES_PLATFORM_POLICY_POLICY_NAME" />. Si se habilitan ambas políticas, las políticas de nube destinadas a los usuarios también prevalecerán sobre las políticas de la plataforma que estén en conflicto.</translation> <translation id="390296766888987595">Mostrar el teclado en pantalla solo si el usuario o la aplicación lo solicita</translation> <translation id="3903313632842363082">Inhabilitar los informes de los usuarios del dispositivo</translation> <translation id="3904304709151553598">Inhabilitar los informes de los ventiladores del dispositivo</translation> @@ -9275,6 +9290,13 @@ Si inhabilitas la política, cuando los usuarios realicen acciones que generen un diálogo de selección de archivos, como importar favoritos, subir archivos o guardar vínculos, se mostrará en su lugar un mensaje. Se considerará como si el usuario hubiera hecho clic en Cancelar en el diálogo de selección de archivos.</translation> <translation id="7638300388094655454">Google Cast</translation> <translation id="7638764766629234761">Permite el uso de notificaciones del sistema</translation> +<translation id="7642740497103044368">Si habilitas la política, las políticas asociadas a una cuenta administrada podrán combinarse en políticas de la máquina. + +Si inhabilitas la política o no la estableces, las políticas de la nube destinadas a los usuarios no podrán combinarse con políticas de cualquier otro origen. + +Solo pueden prevalecer políticas que hayan originado usuarios seguros. Un usuario seguro es aquél que está afiliado a la organización que administra su navegador a través de <ph name="CHROME_ENTERPRISE_CORE_NAME" />. Todas las demás políticas destinadas a los usuarios tendrán la prioridad predeterminada. + +Las políticas que deban combinarse también deben establecerse en <ph name="POLICY_LIST_MULTIPLE_SOURCE_MERGE_LIST_POLICY_NAME" /> o <ph name="POLICY_DICTIONARY_MULTIPLE_SOURCE_MERGE_LIST_POLICY_NAME" />. Se ignorará esta política si no se configura ninguna de las dos políticas mencionadas anteriormente.</translation> <translation id="7643151458117317518">Una política para controlar si se puede inhabilitar la configuración de <ph name="PRIVACY_SANDBOX_NAME" /> de medición de anuncios para los usuarios. Si la inhabilitas, se desactivará la configuración de medición de anuncios para los usuarios. @@ -11077,6 +11099,9 @@ Esta política afecta a los usuarios autenticados mediante GAIA sin SAML. El valor de la política deberá especificarse en días.</translation> +<translation id="8931076230631115330">Si estableces la política, <ph name="PRODUCT_NAME" /> intentará registrarse con la administración del navegador <ph name="CHROME_ENTERPRISE_CORE_NAME" />. El valor de esta política es un token de inscripción que puedes recuperar de la <ph name="GOOGLE_ADMIN_CONSOLE_PRODUCT_NAME" />. + +Para obtener más información, consulta https://support.google.com/chrome/a/answer/9301891.</translation> <translation id="8931555638815157255">Si habilitas la política o no la estableces, los dispositivos inscritos informarán de forma periódica su versión de SO y firmware. Si inhabilitas la política, los dispositivos inscritos no informarán la versión.</translation> @@ -11499,6 +11524,11 @@ Si estableces la política, los usuarios no podrán cambiarlo en la configuración del navegador. Si no la estableces, el modo en segundo plano estará desactivado, pero los usuarios podrán activarlo.</translation> <translation id="981245424658084931">Habilitar la señal de monitoreo de funcionamiento de la actividad del dispositivo</translation> <translation id="981346395360763138">Se inhabilitaron los servicios de ubicación de Google</translation> +<translation id="982192230088110287">Si habilitas la política, la inscripción en el navegador <ph name="CHROME_ENTERPRISE_CORE_NAME" /> será obligatoria y se bloqueará el proceso de ejecución de <ph name="PRODUCT_NAME" /> si esta falla. + +Si la inhabilitas o no la estableces, la inscripción en el navegador <ph name="CHROME_ENTERPRISE_CORE_NAME" /> será opcional y no se bloqueará el proceso de ejecución de <ph name="PRODUCT_NAME" /> si esta falla. + +Esta política se usa en máquinas de escritorio con inscripción en las políticas de la nube. Para obtener más información, consulta https://support.google.com/chrome/a/answer/9301891.</translation> <translation id="982195863867062122">Habilitar <ph name="DBSC_FEATURE_NAME" />.</translation> <translation id="982497069985795632">Habilitar el corrector ortográfico</translation> <translation id="983256325512298435">Define una lista de protocolos que puede ejecutar una aplicación externa a partir los orígenes enumerados sin avisarle al usuario</translation>
diff --git a/components/policy/resources/policy_templates_tr.xtb b/components/policy/resources/policy_templates_tr.xtb index 3f1523ac..177829a1 100644 --- a/components/policy/resources/policy_templates_tr.xtb +++ b/components/policy/resources/policy_templates_tr.xtb
@@ -3041,6 +3041,14 @@ Sıfır veya daha fazla rastgele karakteri eşleştirmek için "*" joker karakterini kullanın. "\", çıkış karakteridir; gerçek "*" veya "\" karakterlerini eşleştirmek için bunların önlerine bir "\" karakteri ekleyin. Bu politika ayarlanmazsa cihazdaki tüm Google hesapları <ph name="PRODUCT_NAME" /> içinde görünür olur.</translation> +<translation id="3245558640643744331">Politika, Etkin değerine ayarlandığında bulut politikası platform politikasıyla çakışıyorsa bulut politikası tercih edilir. + +Politika, Devre Dışı değerine ayarlandığında veya ayarlanmadan bırakıldığında bulut politikası platform politikasıyla çakışıyorsa platform politikası tercih edilir. + +Bu zorunlu politika, makine genelinde geçerli olan bulut politikalarını etkiler. + +Bu politika, <ph name="PRODUCT_NAME" /> için geçerlidir ve bağımsız uygulamalar olduklarından <ph name="GOOGLE_UPDATE_NAME" /> üzerinde etkili değildir. +<ph name="GOOGLE_UPDATE_NAME" /> aynı adda ayrı bir politikaya sahiptir.</translation> <translation id="3246606090306814894">F12'yi tetiklemek için kullanılan kısayolu kontrol et</translation> <translation id="3248019773260441802">Sayfanın yüklemesi kaldırılırken pop-up göstermesine olanak tanır</translation> <translation id="3251500716404598358">Tarayıcılar arasında geçiş yapmak için politikaları yapılandırır. @@ -3912,6 +3920,13 @@ <translation id="3897860452756794695">Yeni offsetParent davranışı kullanılacak.</translation> <translation id="3898345958122666461">NTLMv2'yi kapat</translation> <translation id="3898795800259311780">Ekran görüntüsü almaya izin ver veya bunu reddet</translation> +<translation id="3901722051566830469">Politika, Etkin değerine ayarlanırsa yönetilen bir hesaba ilişkin politikalar ile <ph name="CHROME_ENTERPRISE_CORE_NAME" /> tarayıcı politikaları arasında uyuşmazlık olması halinde ilki öncelikli olur. + +Politika, Devre Dışı değerine ayarlanır veya ayarlanmadan bırakılırsa kullanıcı düzeyindeki bulut politikaları varsayılan olarak öncelikli olur. + +Yalnızca güvenli kullanıcılardan gelen politikalar öncelikli olabilir. Güvenli kullanıcı, tarayıcısını <ph name="CHROME_ENTERPRISE_CORE_NAME" /> ile yöneten kuruluşa bağlıdır. Diğer tüm kullanıcı düzeyindeki politikalar varsayılan olarak öncelikli olur. + +Politika, <ph name="POLICY_CLOUD_POLICY_OVERRIDES_PLATFORM_POLICY_POLICY_NAME" /> ile birlikte kullanılabilir. İki politika da etkinleştirilirse kullanıcı bulut politikaları da uyuşmazlık içeren platform politikaları karşısında öncelikli olur.</translation> <translation id="390296766888987595">Dokunmatik klavyeyi yalnızca kullanıcı veya uygulama istekte bulunursa göster.</translation> <translation id="3903313632842363082">Cihaz kullanıcılarının raporlamasını devre dışı bırak</translation> <translation id="3904304709151553598">Cihazın fan bilgileri raporlamasını devre dışı bırak</translation> @@ -9050,6 +9065,13 @@ Politika, Devre Dışı değerine ayarlanırsa kullanıcılar yer işareti içe aktarma, dosya yükleme ve bağlantı kaydetme gibi dosya seçimi iletişim kutusunun açılmasını sağlayan işlemler yaptıklarında bir mesaj görüntülenir. Kullanıcının dosya seçimi iletişim kutusunda İptal'i tıklamış olduğu varsayılır.</translation> <translation id="7638300388094655454">Google Cast</translation> <translation id="7638764766629234761">Sistem bildirimlerinin kullanılmasına izin ver</translation> +<translation id="7642740497103044368">Politika, Etkin değere ayarlandığında yönetilen bir hesapla ilişkilendirilmiş politikaların, makine düzeyinde politikalarla birleşmesine izin verilir. + +Politika, Devre Dışı değerine ayarlanır veya ayarlanmadan bırakılırsa kullanıcı düzeyindeki bulut politikalarının diğer kaynaklardaki politikalarla birleştirilmesine engel olur. + +Yalnızca güvenli kullanıcılardan gelen politikalar öncelikli olabilir. Güvenli kullanıcı, tarayıcısını <ph name="CHROME_ENTERPRISE_CORE_NAME" /> ile yöneten kuruluşa bağlıdır. Diğer tüm kullanıcı düzeyindeki politikalar varsayılan olarak öncelikli olur. + +Birleştirilmesi gereken politikaların aynı zamanda <ph name="POLICY_LIST_MULTIPLE_SOURCE_MERGE_LIST_POLICY_NAME" /> veya <ph name="POLICY_DICTIONARY_MULTIPLE_SOURCE_MERGE_LIST_POLICY_NAME" /> içerisinde de ayarlanması gerekir. Yukarıda bahsedilen iki politika da yapılandırılmamışsa bu politika yok sayılır.</translation> <translation id="7643151458117317518"><ph name="PRIVACY_SANDBOX_NAME" /> reklam ölçümü ayarının kullanıcılarınız için devre dışı bırakılıp bırakılamayacağını kontrol eden bir politika. Bu politikayı Devre Dışı değerine ayarlarsanız reklam ölçümü ayarı kullanıcılarınız için devre dışı bırakılır. @@ -10794,6 +10816,9 @@ Bu politika; kimlik doğrulaması, SAML olmadan GAIA kullanılarak yapılan kullanıcıları etkiler. Politika değeri gün olarak belirtilmelidir.</translation> +<translation id="8931076230631115330">Politika ayarlanırsa <ph name="PRODUCT_NAME" /> kendini <ph name="CHROME_ENTERPRISE_CORE_NAME" /> tarayıcı yönetimine kaydettirmeye çalışır. Bu politikanın değeri, <ph name="GOOGLE_ADMIN_CONSOLE_PRODUCT_NAME" /> hizmetinden alabileceğiniz kayıt jetonudur. + +Ayrıntıları https://support.google.com/chrome/a/answer/9301891 adresinde bulabilirsiniz.</translation> <translation id="8931555638815157255">Politika Etkin değerine ayarlanır veya ayarlanmadan bırakılırsa kayıtlı cihazlar düzenli olarak işletim sistemi ve donanım yazılımı sürümlerini bildirir. Politika Devre Dışı değerine ayarlanırsa kayıtlı cihazlar sürüm bilgisi vermez.</translation> @@ -11221,6 +11246,11 @@ Bu politikayı ayarlarsanız kullanıcılar tarayıcı ayarlarında değiştiremez. Politika ayarlanmazsa arka plan modu başta kapalı olur, ancak kullanıcılar bunu değiştirebilir.</translation> <translation id="981245424658084931">Cihaz etkinliği sinyalini etkinleştir</translation> <translation id="981346395360763138">Google konum hizmetleri devre dışı</translation> +<translation id="982192230088110287">Politika, Etkin değerine ayarlanırsa <ph name="CHROME_ENTERPRISE_CORE_NAME" /> tarayıcısına kaydolmak zorunlu olur ve başarısız olması halinde <ph name="PRODUCT_NAME" /> ürününün işlemi başlatmasını engeller. + +Politika, Devre Dışı değerine ayarlanır veya ayarlanmadan bırakılırsa <ph name="CHROME_ENTERPRISE_CORE_NAME" /> tarayıcısına kaydolmak isteğe bağlı olur ve başarısız olması halinde <ph name="PRODUCT_NAME" /> ürününün işlemi başlatmasını engellemez. + +Masaüstünde makine kapsamı bulut politika kaydı bu politikayı kullanır. Ayrıntıları https://support.google.com/chrome/a/answer/9301891 adresinde bulabilirsiniz.</translation> <translation id="982195863867062122"><ph name="DBSC_FEATURE_NAME" /> özelliğini etkinleştir.</translation> <translation id="982497069985795632">Yazım denetimini etkinleştir</translation> <translation id="983256325512298435">Listelenen kaynaklardan kullanıcıya sormadan harici uygulama başlatabilecek protokollerin bir listesini tanımlayın</translation>
diff --git a/components/policy/resources/policy_templates_vi.xtb b/components/policy/resources/policy_templates_vi.xtb index cc1d3a96..c2a4669 100644 --- a/components/policy/resources/policy_templates_vi.xtb +++ b/components/policy/resources/policy_templates_vi.xtb
@@ -3016,6 +3016,14 @@ Hãy dùng ký tự đại diện '*' để khớp với ký tự 0 hoặc các ký tự ngẫu nhiên khác. Ký tự thoát là '\', do vậy, để khớp với ký tự '*' hoặc '\' thực, hãy đặt '\' ở trước các ký tự đó. Nếu bạn không đặt chính sách này, thì tất cả các Tài khoản Google trên thiết bị sẽ hiển thị trong <ph name="PRODUCT_NAME" />.</translation> +<translation id="3245558640643744331">Khi bạn đặt chính sách này thành Bật, chính sách đám mây sẽ được ưu tiên nếu có xung đột với chính sách nền tảng. + +Khi bạn đặt chính sách này thành Tắt hoặc không đặt, chính sách nền tảng sẽ được ưu tiên nếu có xung đột với chính sách đám mây. + +Chính sách bắt buộc này ảnh hưởng đến chính sách đám mây trong phạm vi thiết bị. + +Chính sách này chỉ áp dụng cho <ph name="PRODUCT_NAME" /> và không ảnh hưởng đến <ph name="GOOGLE_UPDATE_NAME" /> vì đó là các ứng dụng độc lập. +<ph name="GOOGLE_UPDATE_NAME" /> có một chính sách riêng cùng tên.</translation> <translation id="3246606090306814894">Kiểm soát phím tắt dùng để kích hoạt phím F12</translation> <translation id="3248019773260441802">Cho phép trang hiện cửa sổ bật lên khi đang huỷ tải</translation> <translation id="3251500716404598358">Định cấu hình chính sách để chuyển đổi giữa các trình duyệt. @@ -3889,6 +3897,13 @@ <translation id="3897860452756794695">Thao tác offsetParent mới sẽ được sử dụng.</translation> <translation id="3898345958122666461">Tắt NTLMv2</translation> <translation id="3898795800259311780">Cho phép hoặc từ chối chụp ảnh màn hình</translation> +<translation id="3901722051566830469">Khi bạn đặt chính sách này thành Bật, các chính sách liên kết với một tài khoản được quản lý sẽ được ưu tiên nếu có xung đột với các chính sách trình duyệt <ph name="CHROME_ENTERPRISE_CORE_NAME" />. + +Khi bạn đặt chính sách này thành Tắt hoặc không đặt, các chính sách đám mây ở cấp người dùng sẽ có mức độ ưu tiên theo mặc định. + +Chỉ những chính sách bắt nguồn từ người dùng an toàn mới có thể được ưu tiên áp dụng. Một người dùng an toàn được liên kết với tổ chức quản lý trình duyệt của họ bằng <ph name="CHROME_ENTERPRISE_CORE_NAME" />. Tất cả các chính sách khác ở cấp người dùng sẽ có mức độ ưu tiên theo mặc định. + +Bạn có thể kết hợp chính sách này với <ph name="POLICY_CLOUD_POLICY_OVERRIDES_PLATFORM_POLICY_POLICY_NAME" />. Nếu bạn bật cả hai chính sách, thì các chính sách đám mây ở cấp người dùng cũng sẽ được ưu tiên hơn các chính sách xung đột của nền tảng.</translation> <translation id="390296766888987595">Chỉ hiển thị bàn phím ảo nếu người dùng hoặc ứng dụng yêu cầu.</translation> <translation id="3903313632842363082">Tắt tính năng báo cáo người dùng thiết bị</translation> <translation id="3904304709151553598">Tắt tính năng báo cáo thông tin về quạt của thiết bị</translation> @@ -9071,6 +9086,13 @@ Khi bạn đặt chính sách này thành Tắt, bất cứ khi nào người dùng thực hiện thao tác làm kích hoạt hộp thoại chọn tệp (chẳng hạn như nhập dấu trang, tải tệp lên, lưu đường liên kết, v.v), một thông báo sẽ xuất hiện. Người dùng được xem là đã nhấp vào nút Hủy trên hộp thoại chọn tệp.</translation> <translation id="7638300388094655454">Google Cast</translation> <translation id="7638764766629234761">Cho phép sử dụng các thông báo hệ thống</translation> +<translation id="7642740497103044368">Khi bạn đặt chính sách này thành Bật, các chính sách liên kết với một tài khoản được quản lý sẽ được phép hợp nhất với các chính sách ở cấp thiết bị. + +Khi bạn đặt chính sách này thành Tắt hoặc không đặt, các chính sách đám mây ở cấp người dùng sẽ không thể hợp nhất với các chính sách thuộc những nguồn khác. + +Chỉ những chính sách bắt nguồn từ người dùng an toàn mới có thể được ưu tiên áp dụng. Một người dùng an toàn được liên kết với tổ chức quản lý trình duyệt của họ bằng <ph name="CHROME_ENTERPRISE_CORE_NAME" />. Tất cả các chính sách khác ở cấp người dùng sẽ có mức độ ưu tiên theo mặc định. + +Bạn cũng phải đặt các chính sách cần hợp nhất trong <ph name="POLICY_LIST_MULTIPLE_SOURCE_MERGE_LIST_POLICY_NAME" /> hoặc <ph name="POLICY_DICTIONARY_MULTIPLE_SOURCE_MERGE_LIST_POLICY_NAME" />. Chính sách này sẽ bị bỏ qua nếu bạn không thiết lập chính sách nào trong số 2 chính sách nêu trên.</translation> <translation id="7643151458117317518">Chính sách kiểm soát việc có thể tắt chế độ cài đặt Đo lường quảng cáo của <ph name="PRIVACY_SANDBOX_NAME" /> cho người dùng của bạn hay không. Nếu bạn đặt chính sách này thành Tắt, thì chế độ cài đặt Đo lường quảng cáo sẽ tắt cho người dùng. @@ -10806,6 +10828,9 @@ Chính sách này sẽ ảnh hưởng đến những người dùng xác thực bằng GAIA nhưng không sử dụng SAML. Bạn phải chỉ định giá trị của chính sách bằng ngày.</translation> +<translation id="8931076230631115330">Nếu bạn đặt chính sách này, <ph name="PRODUCT_NAME" /> sẽ cố gắng tự đăng ký thông qua trình quản lý trình duyệt <ph name="CHROME_ENTERPRISE_CORE_NAME" />. Giá trị của chính sách này là mã đăng ký mà bạn có thể truy xuất từ <ph name="GOOGLE_ADMIN_CONSOLE_PRODUCT_NAME" />. + +Vui lòng truy cập https://support.google.com/chrome/a/answer/9301891 để biết thông tin chi tiết.</translation> <translation id="8931555638815157255">Nếu bạn không đặt hoặc đặt chính sách này thành Bật, thì thiết bị đã đăng ký sẽ định kỳ báo cáo phiên bản hệ điều hành và chương trình cơ sở của thiết bị đó. Nếu bạn đặt chính sách này thành Tắt, thiết bị đã đăng ký sẽ không báo cáo thông tin phiên bản.</translation> @@ -11234,6 +11259,11 @@ Nếu bạn đặt chính sách này, người dùng sẽ không thể thay đổi chính sách này trong phần cài đặt của trình duyệt. Nếu bạn không đặt chính sách này, chế độ nền sẽ tắt ngay từ đầu, nhưng người dùng có thể thay đổi chế độ cài đặt này.</translation> <translation id="981245424658084931">Bật gói heartbeat về hoạt động của thiết bị</translation> <translation id="981346395360763138">Đã tắt dịch vụ vị trí của Google</translation> +<translation id="982192230088110287">Nếu bạn đặt chính sách này thành Bật, việc đăng ký trình duyệt thông qua <ph name="CHROME_ENTERPRISE_CORE_NAME" /> sẽ là yêu cầu bắt buộc và trong trường hợp không đăng ký được thì quá trình khởi chạy <ph name="PRODUCT_NAME" /> sẽ bị chặn. + +Nếu bạn đặt chính sách này thành Tắt hoặc không đặt, việc đăng ký trình duyệt thông qua <ph name="CHROME_ENTERPRISE_CORE_NAME" /> sẽ là lựa chọn tuỳ ý và trong trường hợp không đăng ký được thì quá trình khởi chạy <ph name="PRODUCT_NAME" /> cũng không bị chặn. + +Chính sách này được sử dụng trong quá trình đăng ký chính sách đám mây trong phạm vi máy tính. Vui lòng truy cập https://support.google.com/chrome/a/answer/9301891 để biết thông tin chi tiết.</translation> <translation id="982195863867062122">Bật <ph name="DBSC_FEATURE_NAME" />.</translation> <translation id="982497069985795632">Bật tính năng kiểm tra chính tả</translation> <translation id="983256325512298435">Xác định danh sách các giao thức có thể chạy một ứng dụng bên ngoài từ các nguồn được liệt kê mà không cần nhắc người dùng</translation>
diff --git a/components/resources/BUILD.gn b/components/resources/BUILD.gn index d956313..66d60e9 100644 --- a/components/resources/BUILD.gn +++ b/components/resources/BUILD.gn
@@ -38,6 +38,7 @@ "../net_log/resources", "../safe_browsing/content/browser/web_ui/resources", "../signin/core/browser/resources", + "../translate/translate_internals:resources", "../user_actions_ui/resources:resources", "../version_ui/resources:resources", ]
diff --git a/components/strings/components_strings_am.xtb b/components/strings/components_strings_am.xtb index 9258aae..f410ea4 100644 --- a/components/strings/components_strings_am.xtb +++ b/components/strings/components_strings_am.xtb
@@ -3390,6 +3390,7 @@ <translation id="70705239631109039">የእርስዎ ግንኙነት ደህንነት ሙሉ ለሙሉ አይደለም የተጠበቀው</translation> <translation id="7075452647191940183">ጥያቄ ከልክ በላይ ግዙፍ ነው</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">የምግብ እና የሸቀጣሸቀጥ ቸርቻሪዎች</translation> <translation id="7083258188081898530">መሳቢያ 9</translation> <translation id="7086090958708083563">ሰቀላ በተጠቃሚ ተጠይቋል</translation> @@ -4114,6 +4115,7 @@ <translation id="833262891116910667">አድምቅ</translation> <translation id="8339163506404995330">በ<ph name="LANGUAGE" /> ያሉ ገጾች አይተረጎሙም</translation> <translation id="8339275256517065202">Touch ID በመጠቀም ግዢዎን ያጠናቅቁ</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">የምናባዊ ካርድ ምዝገባ በሙሉ ቁመት ተከፍቷል</translation> <translation id="8349305172487531364">የዕልባቶች አሞሌ</translation>
diff --git a/components/strings/components_strings_ar.xtb b/components/strings/components_strings_ar.xtb index 0b09ab023..bce3f534 100644 --- a/components/strings/components_strings_ar.xtb +++ b/components/strings/components_strings_ar.xtb
@@ -3393,6 +3393,7 @@ <translation id="70705239631109039">اتصالك بهذا الموقع تتخلله ثغرات أمنية.</translation> <translation id="7075452647191940183">الطلب كبير جدًا</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">بائعو تجزئة للمواد الغذائية ومنتجات البقالة</translation> <translation id="7083258188081898530">الدُرج 9</translation> <translation id="7086090958708083563">طلب التحميل مقدّم من المستخدم</translation> @@ -4118,6 +4119,7 @@ <translation id="833262891116910667">تمييز</translation> <translation id="8339163506404995330">لن تتم ترجمة الصفحات باللغة <ph name="LANGUAGE" /></translation> <translation id="8339275256517065202">أكمِل عملية الشراء باستخدام ميزة Touch ID</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">تم فتح تسجيل البطاقة الافتراضية بطول الشاشة.</translation> <translation id="8349305172487531364">شريط الإشارات</translation>
diff --git a/components/strings/components_strings_as.xtb b/components/strings/components_strings_as.xtb index 3a010d0e..91de406 100644 --- a/components/strings/components_strings_as.xtb +++ b/components/strings/components_strings_as.xtb
@@ -1690,6 +1690,7 @@ <translation id="3990532701115075684">আপোনাৰ হাত ট্ৰেক কৰক</translation> <translation id="3992684624889376114">এই পৃষ্ঠাখনৰ বিষয়ে</translation> <translation id="3995639283717357522">নীতি প্ৰয়োগ কৰক</translation> +<translation id="3996683183117168945"><ph name="MAX_CITATIONS" /> টাৰ <ph name="CURRENT_CITATION" /> টা উদ্ধৃতি, <ph name="PRODUCT_NAME" />, <ph name="URL" />। <ph name="PAGE_TITLE" />। <ph name="PAGE_PREVIEW" />।</translation> <translation id="399754345297554962">প্ৰমাণীকৃত আৰু প্ৰৱেশিকা পৰীক্ষা</translation> <translation id="3999173941208168054">ভৌতিক চলচ্চিত্ৰ</translation> <translation id="4000598935132966791">পৰিচালিত ব্ৰাউজাৰত ছাইটৰ প্ৰতিবন্ধকতাৰ বিষয়ে অধিক জানক</translation>
diff --git a/components/strings/components_strings_az.xtb b/components/strings/components_strings_az.xtb index 97e8a6c..5ae191d2 100644 --- a/components/strings/components_strings_az.xtb +++ b/components/strings/components_strings_az.xtb
@@ -3387,6 +3387,7 @@ <translation id="70705239631109039">Bağlantınız tam təhlükəsiz deyil</translation> <translation id="7075452647191940183">Sorğu çox uzundur</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">Qida və Ərzaq Mağazaları</translation> <translation id="7083258188081898530">Qab 9</translation> <translation id="7086090958708083563">Yükləmə istifadəçi tərəfindən tələb edildi</translation> @@ -4110,6 +4111,7 @@ <translation id="833262891116910667">Vurğulama</translation> <translation id="8339163506404995330"><ph name="LANGUAGE" /> dilində olan səhifələr tərcümə edilməyəcək</translation> <translation id="8339275256517065202">Sensor ID ilə alışı tamamlayın</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">Virtual kart qeydiyyatı tam uzunluqda açıldı</translation> <translation id="8349305172487531364">Əlfəcin paneli</translation>
diff --git a/components/strings/components_strings_bg.xtb b/components/strings/components_strings_bg.xtb index 62702f6..2f7a2562 100644 --- a/components/strings/components_strings_bg.xtb +++ b/components/strings/components_strings_bg.xtb
@@ -1693,6 +1693,7 @@ <translation id="3990532701115075684">проследява ръцете ви</translation> <translation id="3992684624889376114">Всичко за тази страница</translation> <translation id="3995639283717357522">Прилагане на правилата</translation> +<translation id="3996683183117168945">Цитат <ph name="CURRENT_CITATION" /> от <ph name="MAX_CITATIONS" />, <ph name="PRODUCT_NAME" />, <ph name="URL" />. <ph name="PAGE_TITLE" />. <ph name="PAGE_PREVIEW" />.</translation> <translation id="399754345297554962">Стандартизирани тестове и тестове за прием</translation> <translation id="3999173941208168054">Филми на ужасите</translation> <translation id="4000598935132966791">Научете повече за ограниченията за сайтовете в управляваните браузъри</translation>
diff --git a/components/strings/components_strings_bn.xtb b/components/strings/components_strings_bn.xtb index f816249..dd749bea 100644 --- a/components/strings/components_strings_bn.xtb +++ b/components/strings/components_strings_bn.xtb
@@ -386,6 +386,7 @@ <translation id="1652415888492971589">JIS B8</translation> <translation id="1652862280638399816">MacOS Keychain-এর মাধ্যমে Password Manager ব্যবহার করতে, Chromium আবার লঞ্চ করুন ও Keychain অ্যাক্সেস করার অনুমতি দিন। আবার চালু করার পরে আপনার ট্যাব আবার খোলা হবে।</translation> <translation id="1652887625750064647">AI-এর মাধ্যমে সেরা ম্যাচ</translation> +<translation id="1653465303147789530">অ্যাপ পরিবর্তন না করেই <ph name="PAYMENT_METHOD" />-এর সাহায্যে পেমেন্ট করুন</translation> <translation id="1656024727720460136">পৃষ্ঠাটি যাতে সহজপাঠ্য হয়, তার জন্য Chrome এটিকে সহজ করে তুলেছে। একটি সুরক্ষিত কানেকশন ব্যবহার করে Chrome আবার মূল পৃষ্ঠায় ফিরে এসেছে।</translation> <translation id="1656489000284462475">তুলে নিন</translation> <translation id="1658111267661135323">টিভি এবং ভিডিও</translation> @@ -557,6 +558,7 @@ <translation id="1959001866257244765">Google-এ <ph name="BEGIN_WHITEPAPER_LINK" />আপনার দেখা পৃষ্ঠাগুলির ইউআরএল, সিস্টেমের কিছু সীমিত তথ্য এবং পৃষ্ঠার কিছু কন্টেন্ট<ph name="END_WHITEPAPER_LINK" /> পাঠিয়ে ওয়েবে সকলের জন্য নিরাপত্তা উন্নত করতে সাহায্য করুন। <ph name="BEGIN_PRIVACY_PAGE_LINK" />গোপনীয়তা নীতি<ph name="END_PRIVACY_PAGE_LINK" /></translation> <translation id="1959445535228047762">আপনার টেক্সট ও পৃষ্ঠার কন্টেন্ট Google-এ পাঠানো হয় এবং এই ফিচার উন্নত করার জন্য তা ব্যবহার করা হতে পারে। <ph name="BEGIN_LINK" />আরও জানুন<ph name="END_LINK" /></translation> +<translation id="196146181975453736">আরও ঝটপট পেমেন্ট করতে, নিরাপত্তা সংক্রান্ত এককালীন চেক প্রসেস সম্পূর্ণ করুন</translation> <translation id="1962204205936693436"><ph name="DOMAIN" /> বুকমার্ক</translation> <translation id="1973335181906896915">ধারাবাহিকতাতে ত্রুটি</translation> <translation id="1973785048533660168">ক্লারিক্যাল ও অ্যাডমিনিস্ট্রেটিভ চাকরি</translation> @@ -1586,6 +1588,7 @@ <translation id="378611282717571199">"<ph name="SEARCH_QUERY" />"-এর জন্য মিলে যাওয়া সেরা ফলাফল</translation> <translation id="3789155188480882154">সাইজ ১৬</translation> <translation id="3789841737615482174">ইনস্টল করুন</translation> +<translation id="3791118028061680614">অ্যাপ পরিবর্তন না করেই পেমেন্ট করুন</translation> <translation id="3792100426446126328"><ph name="NAME" /> (<ph name="WIDTH" /> x <ph name="HEIGHT" /> ইঞ্চি)</translation> <translation id="3792826587784915501">কাল্ট এবং ইন্ডি সিনেমা</translation> <translation id="3793574014653384240">সম্প্রতি হওয়া ক্র্যাশের সংখ্যা এবং কারণ</translation> @@ -3391,6 +3394,7 @@ <translation id="70705239631109039">এই কানেকশন সম্পূর্ণরূপে নিরাপদ নয়</translation> <translation id="7075452647191940183">অনুরোধ অত্যন্ত বড়</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">খাদ্য এবং মুদিখানা সংক্রান্ত খুচরো বিক্রেতা</translation> <translation id="7083258188081898530">ট্রে ৯</translation> <translation id="7086090958708083563">ব্যবহারকারী আপলোড করার অনুরোধ জানিয়েছেন</translation> @@ -4115,6 +4119,7 @@ <translation id="833262891116910667">হাইলাইট</translation> <translation id="8339163506404995330"><ph name="LANGUAGE" /> ভাষার পৃষ্ঠার অনুবাদ করা হবে না</translation> <translation id="8339275256517065202">Touch ID ব্যবহার করে আপনার কেনাকাটা সম্পূর্ণ করুন</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">ভার্চুয়াল কার্ড এনরোলমেন্ট সম্পূর্ণ স্ক্রিন জুড়ে খোলা হয়েছে</translation> <translation id="8349305172487531364">বুকমার্কস বার</translation>
diff --git a/components/strings/components_strings_bs.xtb b/components/strings/components_strings_bs.xtb index c4e0344..63c4d52 100644 --- a/components/strings/components_strings_bs.xtb +++ b/components/strings/components_strings_bs.xtb
@@ -3391,6 +3391,7 @@ <translation id="70705239631109039">Vaša veza nije u potpunosti sigurna</translation> <translation id="7075452647191940183">Zahtjev je prevelik</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">Maloprodaja hrane i namirnica</translation> <translation id="7083258188081898530">Ladica 9</translation> <translation id="7086090958708083563">Otpremanje je zatražio korisnik</translation> @@ -4115,6 +4116,7 @@ <translation id="833262891116910667">Istaknuto</translation> <translation id="8339163506404995330">Stranice čiji je jezik <ph name="LANGUAGE" /> neće se prevoditi</translation> <translation id="8339275256517065202">Izvršite kupovinu pomoću Touch ID-a</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">Registracija virtuelne kartice je otvorena u punoj visini</translation> <translation id="8349305172487531364">Traka oznaka</translation>
diff --git a/components/strings/components_strings_ca.xtb b/components/strings/components_strings_ca.xtb index ab27f42..0f8564f3 100644 --- a/components/strings/components_strings_ca.xtb +++ b/components/strings/components_strings_ca.xtb
@@ -1693,6 +1693,7 @@ <translation id="3990532701115075684">Fes un seguiment de mans</translation> <translation id="3992684624889376114">Sobre aquesta pàgina</translation> <translation id="3995639283717357522">Aplica polítiques</translation> +<translation id="3996683183117168945">Citació <ph name="CURRENT_CITATION" /> de <ph name="MAX_CITATIONS" />, <ph name="PRODUCT_NAME" />, <ph name="URL" />. <ph name="PAGE_TITLE" />. <ph name="PAGE_PREVIEW" />.</translation> <translation id="399754345297554962">Proves d'admissió i estandarditzades</translation> <translation id="3999173941208168054">Pel·lícules de terror</translation> <translation id="4000598935132966791">Més informació sobre les restriccions aplicades als llocs web en navegadors gestionats</translation> @@ -3390,6 +3391,7 @@ <translation id="70705239631109039">La connexió no és del tot segura</translation> <translation id="7075452647191940183">La sol·licitud és massa llarga</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">Botigues d'alimentació i comestibles</translation> <translation id="7083258188081898530">Safata 9</translation> <translation id="7086090958708083563">Pujada sol·licitada per l'usuari</translation> @@ -4114,6 +4116,7 @@ <translation id="833262891116910667">Destacat</translation> <translation id="8339163506404995330">Les pàgines en <ph name="LANGUAGE" /> no es traduiran</translation> <translation id="8339275256517065202">Completa la compra amb Touch ID</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">S'ha obert la inscripció de targetes virtuals a alçada completa</translation> <translation id="8349305172487531364">Barra d'adreces d'interès</translation>
diff --git a/components/strings/components_strings_cy.xtb b/components/strings/components_strings_cy.xtb index cef66d4b..99d5004 100644 --- a/components/strings/components_strings_cy.xtb +++ b/components/strings/components_strings_cy.xtb
@@ -1693,6 +1693,7 @@ <translation id="3990532701115075684">Olrhain eich dwylo</translation> <translation id="3992684624889376114">Ynghylch y dudalen hon</translation> <translation id="3995639283717357522">Cymhwyso polisïau</translation> +<translation id="3996683183117168945">Dyfyniad <ph name="CURRENT_CITATION" /> o <ph name="MAX_CITATIONS" />, <ph name="PRODUCT_NAME" />, <ph name="URL" />. <ph name="PAGE_TITLE" />. <ph name="PAGE_PREVIEW" />.</translation> <translation id="399754345297554962">Profion Safonol a Mynediad</translation> <translation id="3999173941208168054">Ffilmiau Arswyd</translation> <translation id="4000598935132966791">Dysgu rhagor am gyfyngiadau gwefan mewn porwyr a reolir</translation> @@ -3390,6 +3391,7 @@ <translation id="70705239631109039">Nid yw'ch cysylltiad yn gwbl ddiogel</translation> <translation id="7075452647191940183">Mae'r cais yn rhy fawr</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">Manwerthwyr Bwyd a Groser</translation> <translation id="7083258188081898530">Hambwrdd 9</translation> <translation id="7086090958708083563">Mae defnyddiwr wedi gofyn i uwchlwytho</translation> @@ -4113,6 +4115,7 @@ <translation id="833262891116910667">Amlygu</translation> <translation id="8339163506404995330">Ni fydd tudalennau yn <ph name="LANGUAGE" /> yn cael eu cyfieithu</translation> <translation id="8339275256517065202">Cwblhewch eich pryniant gan ddefnyddio Touch ID</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">Agorwyd cofrestriad cerdyn rhithwir ar uchder llawn</translation> <translation id="8349305172487531364">Bar nodau tudalen</translation>
diff --git a/components/strings/components_strings_da.xtb b/components/strings/components_strings_da.xtb index 0a5273c0..6d0ba61d 100644 --- a/components/strings/components_strings_da.xtb +++ b/components/strings/components_strings_da.xtb
@@ -3391,6 +3391,7 @@ <translation id="70705239631109039">Din forbindelse er ikke 100 % sikker</translation> <translation id="7075452647191940183">Anmodningen er for stor</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">Forhandlere af mad og dagligvarer</translation> <translation id="7083258188081898530">Bakke 9</translation> <translation id="7086090958708083563">Brugeren anmodede om upload</translation> @@ -4115,6 +4116,7 @@ <translation id="833262891116910667">Fremhæv</translation> <translation id="8339163506404995330">Sider på <ph name="LANGUAGE" /> oversættes ikke</translation> <translation id="8339275256517065202">Gennemfør dit køb ved hjælp af Touch ID</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">Tilmelding via virtuelt kort er åbnet i fuld højde</translation> <translation id="8349305172487531364">Bogmærkelinje</translation>
diff --git a/components/strings/components_strings_de.xtb b/components/strings/components_strings_de.xtb index c0f96ab..6f4cd35 100644 --- a/components/strings/components_strings_de.xtb +++ b/components/strings/components_strings_de.xtb
@@ -3389,6 +3389,7 @@ <translation id="70705239631109039">Deine Verbindung ist nicht uneingeschränkt sicher</translation> <translation id="7075452647191940183">Die Anfrage ist zu groß</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">Lebensmittelhändler</translation> <translation id="7083258188081898530">Fach 9</translation> <translation id="7086090958708083563">Upload vom Nutzer angefordert</translation> @@ -4113,6 +4114,7 @@ <translation id="833262891116910667">Markieren</translation> <translation id="8339163506404995330">Seiten auf <ph name="LANGUAGE" /> werden nicht übersetzt</translation> <translation id="8339275256517065202">Schließe den Kauf mit Touch ID ab</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">Ansicht zur Registrierung der virtuellen Karte vollständig geöffnet</translation> <translation id="8349305172487531364">Lesezeichenleiste</translation>
diff --git a/components/strings/components_strings_el.xtb b/components/strings/components_strings_el.xtb index 05a6d56d..a308670 100644 --- a/components/strings/components_strings_el.xtb +++ b/components/strings/components_strings_el.xtb
@@ -3393,6 +3393,7 @@ <translation id="70705239631109039">Η σύνδεσή σας δεν είναι πλήρως ασφαλής</translation> <translation id="7075452647191940183">Το αίτημα είναι πολύ μεγάλο</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">Πωλητές λιανικής τροφίμων και ειδών παντοπωλείου</translation> <translation id="7083258188081898530">Δίσκος 9</translation> <translation id="7086090958708083563">Ζητήθηκε μεταφόρτωση από έναν χρήστη.</translation> @@ -4117,6 +4118,7 @@ <translation id="833262891116910667">Επισήμανση</translation> <translation id="8339163506404995330">Οι σελίδες στα <ph name="LANGUAGE" /> δεν θα μεταφράζονται</translation> <translation id="8339275256517065202">Ολοκληρώστε την αγορά σας χρησιμοποιώντας το Touch ID</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">Η εγγραφή εικονικής κάρτας άνοιξε σε πλήρες ύψος</translation> <translation id="8349305172487531364">Γραμμή σελιδοδεικτών</translation>
diff --git a/components/strings/components_strings_es-419.xtb b/components/strings/components_strings_es-419.xtb index c7bf529..befa9a87 100644 --- a/components/strings/components_strings_es-419.xtb +++ b/components/strings/components_strings_es-419.xtb
@@ -1694,6 +1694,7 @@ <translation id="3990532701115075684">Hacer un seguimiento de tus manos</translation> <translation id="3992684624889376114">Acerca de esta página</translation> <translation id="3995639283717357522">Aplicar políticas</translation> +<translation id="3996683183117168945">Cita <ph name="CURRENT_CITATION" /> de <ph name="MAX_CITATIONS" />, <ph name="PRODUCT_NAME" />, <ph name="URL" />. <ph name="PAGE_TITLE" />. <ph name="PAGE_PREVIEW" />.</translation> <translation id="399754345297554962">Pruebas estandarizadas y de admisión</translation> <translation id="3999173941208168054">Películas de terror</translation> <translation id="4000598935132966791">Más información sobre las restricciones de sitios en navegadores administrados</translation>
diff --git a/components/strings/components_strings_es.xtb b/components/strings/components_strings_es.xtb index 83a1a2a..fe00b3f4 100644 --- a/components/strings/components_strings_es.xtb +++ b/components/strings/components_strings_es.xtb
@@ -3391,6 +3391,7 @@ <translation id="70705239631109039">Tu conexión no es completamente segura</translation> <translation id="7075452647191940183">La solicitud es demasiado grande</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">Tiendas de alimentación y comestibles</translation> <translation id="7083258188081898530">Bandeja 9</translation> <translation id="7086090958708083563">Subida solicitada por el usuario</translation> @@ -4115,6 +4116,7 @@ <translation id="833262891116910667">Resaltar</translation> <translation id="8339163506404995330">No se traducirán las páginas en <ph name="LANGUAGE" /></translation> <translation id="8339275256517065202">Completa tu compra con Touch ID</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">Registro de tarjeta virtual abierto a altura completa</translation> <translation id="8349305172487531364">Barra de marcadores</translation>
diff --git a/components/strings/components_strings_eu.xtb b/components/strings/components_strings_eu.xtb index d12ed094..dd8d9f8 100644 --- a/components/strings/components_strings_eu.xtb +++ b/components/strings/components_strings_eu.xtb
@@ -1689,6 +1689,7 @@ <translation id="3990532701115075684">Zure eskuen jarraipena egin</translation> <translation id="3992684624889376114">Orri honi buruz</translation> <translation id="3995639283717357522">Aplikatu gidalerroak</translation> +<translation id="3996683183117168945"><ph name="MAX_CITATIONS" /> aipamenetatik <ph name="CURRENT_CITATION" />garrena, <ph name="PRODUCT_NAME" />, <ph name="URL" />. <ph name="PAGE_TITLE" />. <ph name="PAGE_PREVIEW" />.</translation> <translation id="399754345297554962">Proba estandarizatuak eta sarrera-probak</translation> <translation id="3999173941208168054">Beldurrezko filmak</translation> <translation id="4000598935132966791">Lortu informazio gehiago kudeatutako arakatzaileetako webguneen murriztapenei buruz</translation>
diff --git a/components/strings/components_strings_fa.xtb b/components/strings/components_strings_fa.xtb index b84936c..7b05e76 100644 --- a/components/strings/components_strings_fa.xtb +++ b/components/strings/components_strings_fa.xtb
@@ -3391,6 +3391,7 @@ <translation id="70705239631109039">اتصال شما کاملاً ایمن نیست</translation> <translation id="7075452647191940183">درخواست خیلی بزرگ است</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">خردهفروشی خواروبار و مواد غذایی</translation> <translation id="7083258188081898530">سینی ۹</translation> <translation id="7086090958708083563">بارگذاری درخواستشده توسط کاربر</translation> @@ -4115,6 +4116,7 @@ <translation id="833262891116910667">برجستهسازی</translation> <translation id="8339163506404995330">صفحههای <ph name="LANGUAGE" /> ترجمه نخواند شد</translation> <translation id="8339275256517065202">خریدتان را بااستفاده از «شناسه لمسی» تکمیل کنید</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">ثبتنام کارت مجازی بهصورت کامل باز شده است</translation> <translation id="8349305172487531364">نوار نشانکها</translation>
diff --git a/components/strings/components_strings_fi.xtb b/components/strings/components_strings_fi.xtb index 23b2138b..2608d04 100644 --- a/components/strings/components_strings_fi.xtb +++ b/components/strings/components_strings_fi.xtb
@@ -1694,6 +1694,7 @@ <translation id="3990532701115075684">Seurata käsiäsi</translation> <translation id="3992684624889376114">Tietoja sivusta</translation> <translation id="3995639283717357522">Ota käytäntöjä käyttöön</translation> +<translation id="3996683183117168945">Sitaatti <ph name="CURRENT_CITATION" />/<ph name="MAX_CITATIONS" />, <ph name="PRODUCT_NAME" />, <ph name="URL" /> <ph name="PAGE_TITLE" />. <ph name="PAGE_PREVIEW" />.</translation> <translation id="399754345297554962">Standardoidut kokeet ja pääsykokeet</translation> <translation id="3999173941208168054">Kauhuelokuvat</translation> <translation id="4000598935132966791">Lue lisää hallinnoitujen selainten sivustorajoituksista</translation> @@ -3391,6 +3392,7 @@ <translation id="70705239631109039">Yhteytesi ei ole täysin suojattu</translation> <translation id="7075452647191940183">Pyyntö on liian suuri</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">Ruoka ja ruokatavarakauppiaat</translation> <translation id="7083258188081898530">Lokero 9</translation> <translation id="7086090958708083563">Käyttäjä pyysi lataamista</translation> @@ -4115,6 +4117,7 @@ <translation id="833262891116910667">Korosta</translation> <translation id="8339163506404995330">Kielellä <ph name="LANGUAGE" /> kirjoitettuja sivuja ei käännetä.</translation> <translation id="8339275256517065202">Suorita ostos loppuun Touch ID:n avulla</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">Virtuaalikortin rekisteröinti avattu koko näytön kokoisena</translation> <translation id="8349305172487531364">Kirjanmerkkipalkki</translation>
diff --git a/components/strings/components_strings_fil.xtb b/components/strings/components_strings_fil.xtb index f7e6ff9..c616535 100644 --- a/components/strings/components_strings_fil.xtb +++ b/components/strings/components_strings_fil.xtb
@@ -3391,6 +3391,7 @@ <translation id="70705239631109039">Hindi ganap na ligtas ang iyong koneksyon</translation> <translation id="7075452647191940183">Masyadong malaki ang kahilingan</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">Mga Retailer ng Pagkain at Grocery</translation> <translation id="7083258188081898530">Tray 9</translation> <translation id="7086090958708083563">Hiniling ng user ang pag-upload</translation> @@ -4115,6 +4116,7 @@ <translation id="833262891116910667">I-highlight</translation> <translation id="8339163506404995330">Hindi isasalin ang mga page na nasa <ph name="LANGUAGE" /></translation> <translation id="8339275256517065202">Kumpletuhin ang iyong pagbili gamit ang Touch ID</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">Binuksan nang buo ang pag-enroll sa virtual card</translation> <translation id="8349305172487531364">Bookmarks bar</translation>
diff --git a/components/strings/components_strings_fr-CA.xtb b/components/strings/components_strings_fr-CA.xtb index 5a92b0cd..663ed468 100644 --- a/components/strings/components_strings_fr-CA.xtb +++ b/components/strings/components_strings_fr-CA.xtb
@@ -3391,6 +3391,7 @@ <translation id="70705239631109039">Votre connexion n'est pas parfaitement sécurisée</translation> <translation id="7075452647191940183">La taille de la requête est trop grande</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">Détaillants alimentaires et épiceries</translation> <translation id="7083258188081898530">Bac 9</translation> <translation id="7086090958708083563">Téléversement demandé par l'utilisateur</translation> @@ -4114,6 +4115,7 @@ <translation id="833262891116910667">Surligner</translation> <translation id="8339163506404995330">Les pages en <ph name="LANGUAGE" /> ne seront pas traduites</translation> <translation id="8339275256517065202">Terminez votre achat en utilisant Touch ID</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">L'inscription à la carte virtuelle est ouverte à pleine hauteur</translation> <translation id="8349305172487531364">Barre de favoris</translation>
diff --git a/components/strings/components_strings_gl.xtb b/components/strings/components_strings_gl.xtb index 35969f4..595aee56fc 100644 --- a/components/strings/components_strings_gl.xtb +++ b/components/strings/components_strings_gl.xtb
@@ -1693,6 +1693,7 @@ <translation id="3990532701115075684">Facer un seguimento das mans</translation> <translation id="3992684624889376114">Acerca desta páxina</translation> <translation id="3995639283717357522">Aplicar políticas</translation> +<translation id="3996683183117168945">Cita <ph name="CURRENT_CITATION" /> de <ph name="MAX_CITATIONS" />, <ph name="PRODUCT_NAME" />, <ph name="URL" />. <ph name="PAGE_TITLE" />. <ph name="PAGE_PREVIEW" />.</translation> <translation id="399754345297554962">Probas estandarizadas e de admisión</translation> <translation id="3999173941208168054">Películas de terror</translation> <translation id="4000598935132966791">Máis información sobre as restricións de acceso a sitios nos navegadores xestionados</translation> @@ -3390,6 +3391,7 @@ <translation id="70705239631109039">A túa conexión non é completamente segura</translation> <translation id="7075452647191940183">A solicitude é demasiado grande</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">Tendas de alimentación</translation> <translation id="7083258188081898530">Bandexa 9</translation> <translation id="7086090958708083563">O usuario solicitou a carga</translation> @@ -4113,6 +4115,7 @@ <translation id="833262891116910667">Destacar</translation> <translation id="8339163506404995330">Non se traducirán as páxinas en <ph name="LANGUAGE" /></translation> <translation id="8339275256517065202">Completa a compra con Touch ID</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">Rexistro de tarxeta virtual aberto a altura completa</translation> <translation id="8349305172487531364">Barra de marcadores</translation>
diff --git a/components/strings/components_strings_gu.xtb b/components/strings/components_strings_gu.xtb index 7336cba..b724bebd2 100644 --- a/components/strings/components_strings_gu.xtb +++ b/components/strings/components_strings_gu.xtb
@@ -3391,6 +3391,7 @@ <translation id="70705239631109039">તમારું કનેક્શન પૂર્ણપણે સુરક્ષિત નથી</translation> <translation id="7075452647191940183">વિનંતી ખૂબ મોટી છે.</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">ખાણીપીણી અને કરિયાણાના છૂટક વેપારીઓ</translation> <translation id="7083258188081898530">ટ્રે 9</translation> <translation id="7086090958708083563">વપરાશકર્તાએ અપલોડની વિનંતી કરી છે</translation> @@ -4115,6 +4116,7 @@ <translation id="833262891116910667">હાઇલાઇટ</translation> <translation id="8339163506404995330"><ph name="LANGUAGE" />માં છે તે પેજનો અનુવાદ થશે નહીં</translation> <translation id="8339275256517065202">Touch IDનો ઉપયોગ કરીને તમારી ખરીદી પૂર્ણ કરો</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">વર્ચ્યુઅલ કાર્ડની નોંધણી પૂરી ઊંચાઈ સુધી ખોલવામાં આવી છે</translation> <translation id="8349305172487531364">બુકમાર્ક બાર</translation>
diff --git a/components/strings/components_strings_hi.xtb b/components/strings/components_strings_hi.xtb index 1613dda..b143ef2 100644 --- a/components/strings/components_strings_hi.xtb +++ b/components/strings/components_strings_hi.xtb
@@ -1693,6 +1693,7 @@ <translation id="3990532701115075684">हाथों को ट्रैक करें</translation> <translation id="3992684624889376114">इस पेज के बारे में</translation> <translation id="3995639283717357522">नीतियों को लागू करें</translation> +<translation id="3996683183117168945"><ph name="MAX_CITATIONS" /> में से <ph name="CURRENT_CITATION" /> उद्धरण, <ph name="PRODUCT_NAME" />, <ph name="URL" />. <ph name="PAGE_TITLE" />. <ph name="PAGE_PREVIEW" />.</translation> <translation id="399754345297554962">मानक और प्रवेश परीक्षाएं</translation> <translation id="3999173941208168054">डरावनी फ़िल्में</translation> <translation id="4000598935132966791">मैनेज किए जा रहे ब्राउज़र में साइट की पाबंदियों के बारे में ज़्यादा जानें</translation>
diff --git a/components/strings/components_strings_hr.xtb b/components/strings/components_strings_hr.xtb index c48e35a..00f686c 100644 --- a/components/strings/components_strings_hr.xtb +++ b/components/strings/components_strings_hr.xtb
@@ -3390,6 +3390,7 @@ <translation id="70705239631109039">Vaša veza nije posve sigurna</translation> <translation id="7075452647191940183">Zahtjev je prevelik</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">Prodavači hrane i namirnica</translation> <translation id="7083258188081898530">Ladica 9</translation> <translation id="7086090958708083563">Korisnik je zatražio prijenos</translation> @@ -4114,6 +4115,7 @@ <translation id="833262891116910667">Istakni</translation> <translation id="8339163506404995330">Neće se prevoditi <ph name="LANGUAGE" /></translation> <translation id="8339275256517065202">Dovršite kupnju pomoću Touch ID-ja</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">Registracija za virtualnu karticu otvorena je u punoj visini</translation> <translation id="8349305172487531364">Traka oznaka</translation>
diff --git a/components/strings/components_strings_hu.xtb b/components/strings/components_strings_hu.xtb index aa4c505..21d88b5 100644 --- a/components/strings/components_strings_hu.xtb +++ b/components/strings/components_strings_hu.xtb
@@ -3388,6 +3388,7 @@ <translation id="70705239631109039">Kapcsolata nem teljesen biztonságos</translation> <translation id="7075452647191940183">A kérés túl nagy</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">Élelmiszerboltok és -kereskedők</translation> <translation id="7083258188081898530">9. tálca</translation> <translation id="7086090958708083563">A felhasználó kérte a feltöltést</translation> @@ -4113,6 +4114,7 @@ <translation id="833262891116910667">Kiemelés</translation> <translation id="8339163506404995330">A(z) <ph name="LANGUAGE" /> nyelvű oldalak nem lesznek lefordítva</translation> <translation id="8339275256517065202">Vásárlás befejezése a Touch ID használatával</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">A Virtuális kártya regisztrációja párbeszédpanel teljes magasságban van megnyitva</translation> <translation id="8349305172487531364">Könyvjelzősáv</translation>
diff --git a/components/strings/components_strings_id.xtb b/components/strings/components_strings_id.xtb index 6648b30..3c584a0 100644 --- a/components/strings/components_strings_id.xtb +++ b/components/strings/components_strings_id.xtb
@@ -3391,6 +3391,7 @@ <translation id="70705239631109039">Koneksi Anda tidak sepenuhnya aman</translation> <translation id="7075452647191940183">Permintaan terlalu besar</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">Retailer Makanan & Bahan Pangan</translation> <translation id="7083258188081898530">Baki 9</translation> <translation id="7086090958708083563">Upload yang diminta oleh pengguna</translation> @@ -4113,6 +4114,7 @@ <translation id="833262891116910667">Sorotan</translation> <translation id="8339163506404995330">Halaman dalam bahasa <ph name="LANGUAGE" /> tidak akan diterjemahkan</translation> <translation id="8339275256517065202">Selesaikan pembelian menggunakan Touch ID</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">Pendaftaran kartu virtual terbuka sepenuhnya</translation> <translation id="8349305172487531364">Bilah bookmark</translation>
diff --git a/components/strings/components_strings_is.xtb b/components/strings/components_strings_is.xtb index d857684..cef561d0c 100644 --- a/components/strings/components_strings_is.xtb +++ b/components/strings/components_strings_is.xtb
@@ -3391,6 +3391,7 @@ <translation id="70705239631109039">Tengingin er ekki alveg örugg</translation> <translation id="7075452647191940183">Beiðnin er of stór</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">Matvöruverslanir</translation> <translation id="7083258188081898530">Bakki 9</translation> <translation id="7086090958708083563">Notandi bað um sendingu</translation> @@ -4114,6 +4115,7 @@ <translation id="833262891116910667">Auðkenna</translation> <translation id="8339163506404995330">Síður á þessu tungumáli verða ekki þýddar: <ph name="LANGUAGE" /></translation> <translation id="8339275256517065202">Ljúktu við kaupin með snertiauðkenni</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">Skráning sýndarkorts opnuð í fullri hæð</translation> <translation id="8349305172487531364">Bókamerkjastika</translation>
diff --git a/components/strings/components_strings_ka.xtb b/components/strings/components_strings_ka.xtb index a5749d3..82686551 100644 --- a/components/strings/components_strings_ka.xtb +++ b/components/strings/components_strings_ka.xtb
@@ -386,6 +386,7 @@ <translation id="1652415888492971589">JIS B8</translation> <translation id="1652862280638399816">პაროლების მმართველი macOS Keychain-თან რომ გამოიყენოთ, ხელახლა გაუშვით Chromium და დაუშვით წვდომა Keychain-ზე. ხელახლა გაშვების შემდეგ თქვენი ჩანართები თავიდან გაიხსნება.</translation> <translation id="1652887625750064647">ხელოვნური ინტელექტით საუკეთესო შესატყვისობა</translation> +<translation id="1653465303147789530">გადაიხადეთ <ph name="PAYMENT_METHOD" />-ის მეშვეობით აპების გადართვის გარეშე</translation> <translation id="1656024727720460136">Chrome-მა გაამარტივა ეს გვერდი მისი წაკითხვის გასაიოლებლად. Chrome-მა თავდაპირველი გვერდი ჩატვირთა დაცული კავშირის მეშვეობით.</translation> <translation id="1656489000284462475">წაღება</translation> <translation id="1658111267661135323">ტელევიზია და ვიდეო</translation> @@ -556,6 +557,7 @@ <translation id="1959001866257244765">შეუწყვეთ ხელი ვების უსაფრთხოების ყველასთვის გაუმჯობესებას <ph name="BEGIN_WHITEPAPER_LINK" />თქვენ მიერ მონახულებული ზოგიერთი გვერდის URL-ების, სისტემის შეზღუდული ინფორმაციისა და გვერდების გარკვეული კონტენტის<ph name="END_WHITEPAPER_LINK" /> Google-ისთვის გაგზავნით. <ph name="BEGIN_PRIVACY_PAGE_LINK" />კონფიდენციალურობის დებულება<ph name="END_PRIVACY_PAGE_LINK" /></translation> <translation id="1959445535228047762">თქვენი ტექსტი და გვერდზე არსებული კონტენტი გაეგზავნება Google-ს და, შესაძლოა, გამოყენებულ იქნას ამ ფუნქციის გასაუმჯობესებლად. <ph name="BEGIN_LINK" />შეიტყვეთ მეტი<ph name="END_LINK" /></translation> +<translation id="196146181975453736">დაასრულეთ უსაფრთხოების ერთჯერადი შემოწმება, რომ უფრო სწრაფად გადაიხადოთ</translation> <translation id="1962204205936693436"><ph name="DOMAIN" /> სანიშნეები</translation> <translation id="1973335181906896915">სრიალიზაციის შეცდომა</translation> <translation id="1973785048533660168">ვაკანსიები საკანცელარიო და ადმინისტრაციულ სფეროში</translation> @@ -1585,6 +1587,7 @@ <translation id="378611282717571199">საუკეთესო შესატყვისები მოთხოვნისთვის „<ph name="SEARCH_QUERY" />“</translation> <translation id="3789155188480882154">ზომა 16</translation> <translation id="3789841737615482174">ინსტალაცია</translation> +<translation id="3791118028061680614">გადახდა აპების გადართვის გარეშე</translation> <translation id="3792100426446126328"><ph name="NAME" /> (<ph name="WIDTH" /> x <ph name="HEIGHT" /> დუიმი)</translation> <translation id="3792826587784915501">საკულტო და ინდი ფილმები</translation> <translation id="3793574014653384240">ახლახან დაფიქსირებული ავარიული გათიშვების ნომრები და გამომწვევი მიზეზები</translation>
diff --git a/components/strings/components_strings_km.xtb b/components/strings/components_strings_km.xtb index 3240ed5..79245e03c 100644 --- a/components/strings/components_strings_km.xtb +++ b/components/strings/components_strings_km.xtb
@@ -3395,6 +3395,7 @@ <translation id="70705239631109039">ការតភ្ជាប់របស់អ្នកមិនមានសុវត្ថិភាពពេញលេញទេ</translation> <translation id="7075452647191940183">សំណើមានទំហំធំពេក</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">អ្នកលក់អាហារ និងគ្រឿងទេស</translation> <translation id="7083258188081898530">ទម្រទី 9</translation> <translation id="7086090958708083563">ការបង្ហោះដែលបានស្នើសុំដោយអ្នកប្រើប្រាស់</translation> @@ -4120,6 +4121,7 @@ <translation id="833262891116910667">រំលេច</translation> <translation id="8339163506404995330">ទំព័រជាភាសា <ph name="LANGUAGE" /> នឹងមិនត្រូវបានបកប្រែទេ</translation> <translation id="8339275256517065202">បញ្ចប់ការទិញរបស់អ្នកដោយប្រើ Touch ID</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">បានបើកការចុះឈ្មោះកាតនិម្មិតពេញអេក្រង់</translation> <translation id="8349305172487531364">របាចំណាំ</translation>
diff --git a/components/strings/components_strings_ky.xtb b/components/strings/components_strings_ky.xtb index 4796488c..a6c48c5 100644 --- a/components/strings/components_strings_ky.xtb +++ b/components/strings/components_strings_ky.xtb
@@ -1692,6 +1692,7 @@ <translation id="3990532701115075684">Колдоруңузга көз салуу</translation> <translation id="3992684624889376114">Бул бет жөнүндө</translation> <translation id="3995639283717357522">Эрежелерди колдонуу</translation> +<translation id="3996683183117168945"><ph name="MAX_CITATIONS" /> ичинен <ph name="CURRENT_CITATION" />-цитата, <ph name="PRODUCT_NAME" />, <ph name="URL" />. <ph name="PAGE_TITLE" />. <ph name="PAGE_PREVIEW" />.</translation> <translation id="399754345297554962">Стандартташтырылган жана кабыл алуу сынактары</translation> <translation id="3999173941208168054">Үрөй учурган тасмалар</translation> <translation id="4000598935132966791">Башкарылган серепчилердеги сайт чектөөлөрү тууралуу кеңири маалымат</translation> @@ -3389,6 +3390,7 @@ <translation id="70705239631109039">Туташуу толугу менен коопсуз эмес</translation> <translation id="7075452647191940183">Сурамдын көлөмү өтө чоң</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">Тамак-аш жана азык-түлүк сатуучулар</translation> <translation id="7083258188081898530">9-түпкүч</translation> <translation id="7086090958708083563">Колдонуучу тарабынан жүктөп берүү суралды</translation> @@ -4112,6 +4114,7 @@ <translation id="833262891116910667">Бөлүп көрсөтүү</translation> <translation id="8339163506404995330"><ph name="LANGUAGE" /> тилиндеги барактар которулбайт</translation> <translation id="8339275256517065202">Бул нерсени Touch ID аркылуу сатып алыңыз</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">Виртуалдык картаны каттоо диалогу толук экранда ачылды</translation> <translation id="8349305172487531364">Кыстармалар тилкеси</translation>
diff --git a/components/strings/components_strings_mk.xtb b/components/strings/components_strings_mk.xtb index 6c25834..0bf8127 100644 --- a/components/strings/components_strings_mk.xtb +++ b/components/strings/components_strings_mk.xtb
@@ -1693,6 +1693,7 @@ <translation id="3990532701115075684">да ги следи вашите раце</translation> <translation id="3992684624889376114">За оваа страница</translation> <translation id="3995639283717357522">Примени ги правилата</translation> +<translation id="3996683183117168945">Цитат <ph name="CURRENT_CITATION" /> од <ph name="MAX_CITATIONS" />, <ph name="PRODUCT_NAME" />, <ph name="URL" />. <ph name="PAGE_TITLE" />. <ph name="PAGE_PREVIEW" />.</translation> <translation id="399754345297554962">Стандардизирани и приемни тестови</translation> <translation id="3999173941208168054">Хорор-филмови</translation> <translation id="4000598935132966791">Дознајте повеќе за ограничувањата на сајтовите во управувани прелистувачи</translation>
diff --git a/components/strings/components_strings_ml.xtb b/components/strings/components_strings_ml.xtb index 6299dc6..4f35fd95 100644 --- a/components/strings/components_strings_ml.xtb +++ b/components/strings/components_strings_ml.xtb
@@ -386,6 +386,7 @@ <translation id="1652415888492971589">JIS B8</translation> <translation id="1652862280638399816">macOS Keychain-ന് ഒപ്പം Password Manager ഉപയോഗിക്കുന്നതിന്, Chromium വീണ്ടും ആരംഭിച്ച് Keychain ആക്സസ് അനുവദിക്കുക. വീണ്ടും ആരംഭിച്ചുകഴിഞ്ഞാൽ നിങ്ങളുടെ ടാബുകൾ വീണ്ടും തുറക്കും.</translation> <translation id="1652887625750064647">AI നിർദ്ദേശിക്കുന്ന മികച്ച പൊരുത്തം</translation> +<translation id="1653465303147789530">ആപ്പുകൾ മാറാതെ തന്നെ <ph name="PAYMENT_METHOD" /> ഉപയോഗിച്ച് പേ ചെയ്യുക</translation> <translation id="1656024727720460136">വായന എളുപ്പമാക്കുന്നതിന് Chrome ഈ പേജ് ലളിതമാക്കി. സുരക്ഷിത കണക്ഷനിലൂടെ Chrome ഒറിജിനൽ പേജ് വീണ്ടെടുത്തു.</translation> <translation id="1656489000284462475">പിക്കപ്പ്</translation> <translation id="1658111267661135323">ടിവിയും വീഡിയോയും</translation> @@ -556,6 +557,7 @@ <translation id="1959001866257244765">നിങ്ങൾ സന്ദർശിക്കുന്ന ചില പേജുകളുടെ <ph name="BEGIN_WHITEPAPER_LINK" />URL, പരിമിത സിസ്റ്റം വിവരങ്ങൾ, ചില പേജുകളുടെ ഉള്ളടക്കം<ph name="END_WHITEPAPER_LINK" /> എന്നിവ Google-ലേക്ക് അയച്ച് എല്ലാവർക്കുമായി വെബിലെ സുരക്ഷ മെച്ചപ്പെടുത്താൻ സഹായിക്കുക. <ph name="BEGIN_PRIVACY_PAGE_LINK" />സ്വകാര്യതാ നയം<ph name="END_PRIVACY_PAGE_LINK" /></translation> <translation id="1959445535228047762">നിങ്ങളുടെ ടെക്സ്റ്റും പേജ് ഉള്ളടക്കവും Google-ന് അയയ്ക്കുന്നു, ഈ ഫീച്ചർ മെച്ചപ്പെടുത്താൻ അവ ഉപയോഗിച്ചേക്കാം. <ph name="BEGIN_LINK" />കൂടുതലറിയുക<ph name="END_LINK" /></translation> +<translation id="196146181975453736">കൂടുതൽ വേഗത്തിൽ പേ ചെയ്യാൻ ഒറ്റത്തവണ സുരക്ഷാ പരിശോധന പൂർത്തിയാക്കുക</translation> <translation id="1962204205936693436"><ph name="DOMAIN" /> ബുക്ക്മാർക്കുകൾ</translation> <translation id="1973335181906896915">സീരിയലൈസേഷൻ പിശക്</translation> <translation id="1973785048533660168">ക്ലെറിക്കൽ, അഡ്മിനിസ്ട്രേറ്റീവ് ജോലികൾ</translation> @@ -1584,6 +1586,7 @@ <translation id="378611282717571199">"<ph name="SEARCH_QUERY" />" എന്നതിനുള്ള മികച്ച പൊരുത്തങ്ങൾ</translation> <translation id="3789155188480882154">വലുപ്പം 16</translation> <translation id="3789841737615482174">ഇന്സ്റ്റാൾ ചെയ്യുക</translation> +<translation id="3791118028061680614">ആപ്പുകൾ മാറാതെ തന്നെ പേ ചെയ്യുക</translation> <translation id="3792100426446126328"><ph name="NAME" /> (<ph name="WIDTH" /> x <ph name="HEIGHT" /> ഇഞ്ച്)</translation> <translation id="3792826587784915501">കൾട്ട്, ഇൻഡി സിനിമകൾ</translation> <translation id="3793574014653384240">അടുത്തിടെയുണ്ടായ ക്രാഷുകളുടെ എണ്ണവും കാരണങ്ങളും</translation> @@ -3390,6 +3393,7 @@ <translation id="70705239631109039">നിങ്ങളുടെ കണക്ഷൻ പൂർണ്ണമായും സുരക്ഷിതമല്ല</translation> <translation id="7075452647191940183">അഭ്യർത്ഥന വളരെ വലുതാണ്</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">ഭക്ഷണ, പലചരക്ക് ചില്ലറവ്യാപാരികൾ</translation> <translation id="7083258188081898530">ട്രേ 9</translation> <translation id="7086090958708083563">ഉപയോക്താവ് അഭ്യർത്ഥിച്ച അപ്ലോഡ്</translation> @@ -4112,6 +4116,7 @@ <translation id="833262891116910667">ഹൈലൈറ്റ് ചെയ്യുക</translation> <translation id="8339163506404995330"><ph name="LANGUAGE" /> ഭാഷയിലുള്ള പേജുകൾ വിവർത്തനം ചെയ്യില്ല</translation> <translation id="8339275256517065202">ടച്ച് ഐഡി ഉപയോഗിച്ച് വാങ്ങൽ പൂർത്തിയാക്കുക</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">വെർച്വൽ കാർഡ് എൻറോൾമെന്റ് മുഴുവൻ ഉയരത്തിൽ തുറന്നു</translation> <translation id="8349305172487531364">ബുക്മാര്ക്ക് ബാര്</translation>
diff --git a/components/strings/components_strings_mn.xtb b/components/strings/components_strings_mn.xtb index 7a57a54..3a493f4 100644 --- a/components/strings/components_strings_mn.xtb +++ b/components/strings/components_strings_mn.xtb
@@ -3391,6 +3391,7 @@ <translation id="70705239631109039">Таны холболт бүрэн аюулгүй биш байна</translation> <translation id="7075452647191940183">Хүсэлт хэт том байна</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">Хоол, хүнсний жижиглэн борлуулагчид</translation> <translation id="7083258188081898530">Гарах цаасны тавиур 9</translation> <translation id="7086090958708083563">Хэрэглэгч байршуулах хүсэлт тавьсан</translation> @@ -4114,6 +4115,7 @@ <translation id="833262891116910667">Тодруулах</translation> <translation id="8339163506404995330"><ph name="LANGUAGE" /> хэл дээрх хуудсыг орчуулахгүй</translation> <translation id="8339275256517065202">Хүрэлтийн ID-г ашиглан худалдан авалтаа дуусгана уу</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">Виртуал картын бүртгэлийг бүтэн өндрөөр нь нээсэн</translation> <translation id="8349305172487531364">Хайлтын жагсаалтын цонх</translation>
diff --git a/components/strings/components_strings_mr.xtb b/components/strings/components_strings_mr.xtb index da6ecd7..b814cc40 100644 --- a/components/strings/components_strings_mr.xtb +++ b/components/strings/components_strings_mr.xtb
@@ -3391,6 +3391,7 @@ <translation id="70705239631109039">तुमचे कनेक्शन पूर्णपणे सुरक्षित नाही</translation> <translation id="7075452647191940183">विनंती खूपच मोठी आहे</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">खाद्यपदार्थ आणि किराणामालाचे रिटेल विक्रेते</translation> <translation id="7083258188081898530">ट्रे ९</translation> <translation id="7086090958708083563">वापरकर्त्याने अपलोडची विनंती केली आहे</translation> @@ -4115,6 +4116,7 @@ <translation id="833262891116910667">हायलाइट</translation> <translation id="8339163506404995330"><ph name="LANGUAGE" />मधील पेज भाषांतरीत केले जाणार नाही</translation> <translation id="8339275256517065202">टच आयडी वापरून तुमची खरेदी पूर्ण करा</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">व्हर्च्युअल कार्डची नोंदणी पूर्ण उंचीवर उघडली आहे</translation> <translation id="8349305172487531364">बुकमार्क बार</translation>
diff --git a/components/strings/components_strings_ms.xtb b/components/strings/components_strings_ms.xtb index 9030366b..bc8d3769 100644 --- a/components/strings/components_strings_ms.xtb +++ b/components/strings/components_strings_ms.xtb
@@ -386,6 +386,7 @@ <translation id="1652415888492971589">JIS B8</translation> <translation id="1652862280638399816">Untuk menggunakan Password Manager dengan macOS Keychain, lancarkan semula Chromium dan benarkan akses Keychain. Tab anda akan dibuka semula selepas pelancaran semula.</translation> <translation id="1652887625750064647">Padanan Terbaik AI</translation> +<translation id="1653465303147789530">Bayar dengan <ph name="PAYMENT_METHOD" /> tanpa menukar apl</translation> <translation id="1656024727720460136">Chrome meringkaskan halaman ini untuk memudahkan pembacaan. Chrome mengambil halaman asal melalui sambungan selamat.</translation> <translation id="1656489000284462475">Pengambilan</translation> <translation id="1658111267661135323">TV & Video</translation> @@ -556,6 +557,7 @@ <translation id="1959001866257244765">Bantu kami meningkatkan keselamatan di web untuk semua orang dengan menghantar <ph name="BEGIN_WHITEPAPER_LINK" />URL sesetengah halaman yang anda lawati, maklumat sistem terhad dan sesetengah kandungan halaman<ph name="END_WHITEPAPER_LINK" /> kepada Google. <ph name="BEGIN_PRIVACY_PAGE_LINK" />Dasar privasi<ph name="END_PRIVACY_PAGE_LINK" /></translation> <translation id="1959445535228047762">Kandungan teks dan halaman anda dihantar kepada Google dan boleh digunakan untuk meningkatkan ciri ini. <ph name="BEGIN_LINK" />Ketahui lebih lanjut<ph name="END_LINK" /></translation> +<translation id="196146181975453736">Selesaikan semakan keselamatan satu kali untuk membuat pembayaran yang lebih pantas</translation> <translation id="1962204205936693436"><ph name="DOMAIN" /> Penanda halaman</translation> <translation id="1973335181906896915">Ralat penyirian</translation> <translation id="1973785048533660168">Pekerjaan Perkeranian & Pentadbiran</translation> @@ -1586,6 +1588,7 @@ <translation id="378611282717571199">Padanan terbaik untuk "<ph name="SEARCH_QUERY" />"</translation> <translation id="3789155188480882154">Saiz 16</translation> <translation id="3789841737615482174">Pasang</translation> +<translation id="3791118028061680614">Bayar tanpa menukar apl</translation> <translation id="3792100426446126328"><ph name="NAME" /> (<ph name="WIDTH" /> x <ph name="HEIGHT" /> in)</translation> <translation id="3792826587784915501">Filem Kultus & Indie</translation> <translation id="3793574014653384240">Bilangan dan punca ranap sistem yang berlaku baru-baru ini</translation> @@ -3392,6 +3395,7 @@ <translation id="70705239631109039">Sambungan anda tidak selamat sepenuhnya</translation> <translation id="7075452647191940183">Permintaan terlalu besar</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">Peruncit Makanan & Barang Runcit</translation> <translation id="7083258188081898530">Dulang 9</translation> <translation id="7086090958708083563">Muat naik diminta oleh pengguna</translation> @@ -4116,6 +4120,7 @@ <translation id="833262891116910667">Serlahkan</translation> <translation id="8339163506404995330">Halaman dalam <ph name="LANGUAGE" /> tidak akan diterjemahkan</translation> <translation id="8339275256517065202">Lengkapkan pembelian anda menggunakan Touch ID</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">Pendaftaran kad maya dibuka pada ketinggian penuh</translation> <translation id="8349305172487531364">Bar penanda halaman</translation>
diff --git a/components/strings/components_strings_no.xtb b/components/strings/components_strings_no.xtb index b64f5491..be79f88 100644 --- a/components/strings/components_strings_no.xtb +++ b/components/strings/components_strings_no.xtb
@@ -3391,6 +3391,7 @@ <translation id="70705239631109039">Tilkoblingen er ikke helt sikker</translation> <translation id="7075452647191940183">Forespørselen er for stor</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">Mat- og dagligvareforretninger</translation> <translation id="7083258188081898530">Skuff 9</translation> <translation id="7086090958708083563">Opplasting forespurt av bruker</translation> @@ -4114,6 +4115,7 @@ <translation id="833262891116910667">Fremhev</translation> <translation id="8339163506404995330">Sider på <ph name="LANGUAGE" /> oversettes ikke</translation> <translation id="8339275256517065202">Fullfør kjøpet med Touch ID</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">Registrering med virtuelt kort er åpnet i full høyde</translation> <translation id="8349305172487531364">Bokmerkerad</translation>
diff --git a/components/strings/components_strings_or.xtb b/components/strings/components_strings_or.xtb index 9627a35..07075247 100644 --- a/components/strings/components_strings_or.xtb +++ b/components/strings/components_strings_or.xtb
@@ -1690,6 +1690,7 @@ <translation id="3990532701115075684">ଆପଣଙ୍କ ହାତକୁ ଟ୍ରାକ କରନ୍ତୁ</translation> <translation id="3992684624889376114">ଏହି ପୃଷ୍ଠା ବିଷୟରେ</translation> <translation id="3995639283717357522">ନୀତିଗୁଡ଼ିକ ଲାଗୁ କରନ୍ତୁ</translation> +<translation id="3996683183117168945"><ph name="CURRENT_CITATION" />ରୁ <ph name="MAX_CITATIONS" /> ନମ୍ବର ସାଇଟେସନ, <ph name="PRODUCT_NAME" />, <ph name="URL" />। <ph name="PAGE_TITLE" />। <ph name="PAGE_PREVIEW" />।</translation> <translation id="399754345297554962">ଷ୍ଟାଣ୍ଡାର୍ଡାଇଜ୍ଡ ଏବଂ ଆଡମିସନ ଟେଷ୍ଟଗୁଡ଼ିକ</translation> <translation id="3999173941208168054">ହରର ମୁଭିଗୁଡ଼ିକ</translation> <translation id="4000598935132966791">ପରିଚାଳିତ ବ୍ରାଉଜରଗୁଡ଼ିକରେ ସାଇଟ ପ୍ରତିବନ୍ଧକଗୁଡ଼ିକ ବିଷୟରେ ଅଧିକ ଜାଣନ୍ତୁ</translation> @@ -3386,6 +3387,7 @@ <translation id="70705239631109039">ଆପଣଙ୍କର ସଂଯୋଗ ସମ୍ପୂର୍ଣ୍ଣରୂପେ ସୁରକ୍ଷିତ ନୁହେଁ</translation> <translation id="7075452647191940183">ଅନୁରୋଧଟି ବହୁତ ଲମ୍ବା ଅଟେ</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">ଖାଦ୍ୟ ଏବଂ ଗ୍ରୋସରୀ ରିଟେଲରଗୁଡ଼ିକ</translation> <translation id="7083258188081898530">ଟ୍ରେ 9</translation> <translation id="7086090958708083563">ୟୁଜରଙ୍କ ଦ୍ୱାରା ଅପଲୋଡ ପାଇଁ ଅନୁରୋଧ କରାଯାଇଛି</translation> @@ -4109,6 +4111,7 @@ <translation id="833262891116910667">ହାଇଲାଇଟ୍</translation> <translation id="8339163506404995330"><ph name="LANGUAGE" /> ରେ ପୃଷ୍ଠାଗୁଡ଼ିକ ଅନୁବାଦ କରାଯିବନାହିଁ</translation> <translation id="8339275256517065202">Touch ID ବ୍ୟବହାର କରି ଆପଣଙ୍କ କ୍ରୟକୁ ସମ୍ପୂର୍ଣ୍ଣ କରନ୍ତୁ</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">ଭର୍ଚୁଆଲ କାର୍ଡ ପଞ୍ଜିକରଣ ପୂର୍ଣ୍ଣ ସ୍କ୍ରିନରେ ଖୋଲାଯାଇଛି</translation> <translation id="8349305172487531364">ବୁକମାର୍କସ୍ ଦଣ୍ଡିକା</translation>
diff --git a/components/strings/components_strings_pa.xtb b/components/strings/components_strings_pa.xtb index 97e62e7..78ff22e 100644 --- a/components/strings/components_strings_pa.xtb +++ b/components/strings/components_strings_pa.xtb
@@ -1690,6 +1690,7 @@ <translation id="3990532701115075684">ਤੁਹਾਡੇ ਹੱਥ ਟਰੈਕ ਕਰਨਾ</translation> <translation id="3992684624889376114">ਇਸ ਪੰਨੇ ਬਾਰੇ</translation> <translation id="3995639283717357522">ਨੀਤੀਆਂ ਲਾਗੂ ਕਰੋ</translation> +<translation id="3996683183117168945"><ph name="MAX_CITATIONS" /> ਵਿੱਚੋਂ <ph name="CURRENT_CITATION" /> ਹਵਾਲੇ, <ph name="PRODUCT_NAME" />, <ph name="URL" />. <ph name="PAGE_TITLE" />। <ph name="PAGE_PREVIEW" />।</translation> <translation id="399754345297554962">ਮਿਆਰੀ ਅਤੇ ਦਾਖਲਾ ਪਰੀਖਿਆਵਾਂ</translation> <translation id="3999173941208168054">ਡਰਾਉਣੀਆਂ ਫ਼ਿਲਮਾਂ</translation> <translation id="4000598935132966791">ਪ੍ਰਬੰਧਿਤ ਬ੍ਰਾਊਜ਼ਰਾਂ ਵਿੱਚ ਸਾਈਟ ਪਾਬੰਦੀਆਂ ਬਾਰੇ ਹੋਰ ਜਾਣੋ</translation> @@ -3386,6 +3387,7 @@ <translation id="70705239631109039">ਤੁਹਾਡਾ ਕਨੈਕਸ਼ਨ ਪੂਰੀ ਤਰ੍ਹਾਂ ਸੁਰੱਖਿਅਤ ਨਹੀਂ ਹੈ</translation> <translation id="7075452647191940183">ਬੇਨਤੀ ਬਹੁਤ ਜ਼ਿਆਦਾ ਵੱਡੀ ਹੈ</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">ਭੋਜਨ ਅਤੇ ਕਰਿਆਨੇ ਦੇ ਵਿਕਰੇਤਾ</translation> <translation id="7083258188081898530">ਟ੍ਰੇਅ 9</translation> <translation id="7086090958708083563">ਵਰਤੋਂਕਾਰ ਵੱਲੋਂ ਅੱਪਲੋਡ ਦੀ ਬੇਨਤੀ ਕੀਤੀ ਗਈ</translation> @@ -4109,6 +4111,7 @@ <translation id="833262891116910667">ਉਜਾਗਰ ਕਰੋ</translation> <translation id="8339163506404995330"><ph name="LANGUAGE" /> ਭਾਸ਼ਾ ਵਾਲੇ ਪੰਨਿਆਂ ਦਾ ਅਨੁਵਾਦ ਨਹੀਂ ਕੀਤਾ ਜਾਵੇਗਾ</translation> <translation id="8339275256517065202">ਸਪਰਸ਼ ਆਈਡੀ ਦੀ ਵਰਤੋਂ ਕਰ ਕੇ ਆਪਣੀ ਖਰੀਦ ਨੂੰ ਪੂਰਾ ਕਰੋ</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">ਆਭਾਸੀ ਕਾਰਡ ਦਰਜ ਕਰਨਾ ਪੂਰੀ ਤਰ੍ਹਾਂ ਖੋਲ੍ਹਿਆ ਗਿਆ</translation> <translation id="8349305172487531364">ਬੁੱਕਮਾਰਕਸ ਬਾਰ</translation>
diff --git a/components/strings/components_strings_pt-PT.xtb b/components/strings/components_strings_pt-PT.xtb index 03d6b5d..b0cb6ff 100644 --- a/components/strings/components_strings_pt-PT.xtb +++ b/components/strings/components_strings_pt-PT.xtb
@@ -386,6 +386,7 @@ <translation id="1652415888492971589">JIS B8</translation> <translation id="1652862280638399816">Para usar o Gestor de Palavras-passe com o Porta-chaves macOS, reinicie o Chromium e permita o acesso ao Porta-chaves. Os separadores reabrem depois de serem reiniciados.</translation> <translation id="1652887625750064647">Melhor correspondência de IA</translation> +<translation id="1653465303147789530">Pague com o <ph name="PAYMENT_METHOD" /> sem mudar de app</translation> <translation id="1656024727720460136">O Chrome simplificou esta página para facilitar a leitura. O Chrome obteve a página original através de uma ligação segura.</translation> <translation id="1656489000284462475">Recolha</translation> <translation id="1658111267661135323">TV e vídeo</translation> @@ -556,6 +557,7 @@ <translation id="1959001866257244765">Ajude a melhorar a segurança na Web para todos ao enviar <ph name="BEGIN_WHITEPAPER_LINK" />os URLs de algumas páginas que visita, informações limitadas do sistema e algum conteúdo das páginas<ph name="END_WHITEPAPER_LINK" /> para a Google. <ph name="BEGIN_PRIVACY_PAGE_LINK" />Política de Privacidade<ph name="END_PRIVACY_PAGE_LINK" /></translation> <translation id="1959445535228047762">O texto e o conteúdo da página são enviados para a Google e podem ser usados para melhorar esta funcionalidade. <ph name="BEGIN_LINK" />Saiba mais<ph name="END_LINK" /></translation> +<translation id="196146181975453736">Faça uma verificação de segurança única para pagar mais rapidamente</translation> <translation id="1962204205936693436">Marcadores de <ph name="DOMAIN" /></translation> <translation id="1973335181906896915">Erro de serialização</translation> <translation id="1973785048533660168">Empregos administrativos</translation> @@ -1585,6 +1587,7 @@ <translation id="378611282717571199">Melhores correspondências para "<ph name="SEARCH_QUERY" />"</translation> <translation id="3789155188480882154">Tamanho 16</translation> <translation id="3789841737615482174">Instalar</translation> +<translation id="3791118028061680614">Faça pagamentos sem mudar de app</translation> <translation id="3792100426446126328"><ph name="NAME" /> (<ph name="WIDTH" /> x <ph name="HEIGHT" /> pol.)</translation> <translation id="3792826587784915501">Filmes de culto e indie</translation> <translation id="3793574014653384240">Números e causas das falhas de sistema que ocorreram recentemente.</translation>
diff --git a/components/strings/components_strings_ru.xtb b/components/strings/components_strings_ru.xtb index 541cd7d..a214862d 100644 --- a/components/strings/components_strings_ru.xtb +++ b/components/strings/components_strings_ru.xtb
@@ -1145,7 +1145,7 @@ <translation id="3052964831964880138"><ph name="PRODUCT_NAME" />: скидка <ph name="PRICE_DROP" /></translation> <translation id="3061707000357573562">Исправление сервиса</translation> <translation id="306198082577913404">Включить улучшенные подсказки.</translation> -<translation id="3062655045399308513">Удалить данные о работе в браузере…</translation> +<translation id="3062655045399308513">Удалить данные браузера…</translation> <translation id="3063453392496098461">Не удалось установить фоновые службы VPN.</translation> <translation id="306573536155379004">Игра началась.</translation> <translation id="3067505415088964188">Низкие цены</translation> @@ -3390,6 +3390,7 @@ <translation id="70705239631109039">Подключение к сайту небезопасно</translation> <translation id="7075452647191940183">Запрос слишком велик.</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">Продуктовые магазины</translation> <translation id="7083258188081898530">Лоток 9</translation> <translation id="7086090958708083563">Загрузка запрошена пользователем</translation> @@ -4114,6 +4115,7 @@ <translation id="833262891116910667">Выделить</translation> <translation id="8339163506404995330">Страницы на этом языке (<ph name="LANGUAGE" />) не будут переводиться автоматически</translation> <translation id="8339275256517065202">Завершите покупку с помощью Touch ID.</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">Диалоговое окно создания виртуальной карты открыто на весь экран</translation> <translation id="8349305172487531364">Панель закладок</translation>
diff --git a/components/strings/components_strings_si.xtb b/components/strings/components_strings_si.xtb index 192de01..866df392 100644 --- a/components/strings/components_strings_si.xtb +++ b/components/strings/components_strings_si.xtb
@@ -1693,6 +1693,7 @@ <translation id="3990532701115075684">ඔබේ දෑත් නිරීක්ෂණය කරන්න</translation> <translation id="3992684624889376114">මෙම පිටුව පිළිබඳ</translation> <translation id="3995639283717357522">ප්රතිපත්ති යොදන්න</translation> +<translation id="3996683183117168945">උපුටා ගැනීම <ph name="MAX_CITATIONS" />න් <ph name="CURRENT_CITATION" />, <ph name="PRODUCT_NAME" />, <ph name="URL" />. <ph name="PAGE_TITLE" />. <ph name="PAGE_PREVIEW" />.</translation> <translation id="399754345297554962">ප්රමාණීකෘත සහ ඇතුළත් වීමේ පරීක්ෂණ</translation> <translation id="3999173941208168054">ත්රාසජනක චිත්රපට</translation> <translation id="4000598935132966791">කළමනාකරණය කළ බ්රව්සරවල අඩවි සීමා කිරීම් පිළිබඳව තව දැන ගන්න</translation>
diff --git a/components/strings/components_strings_sk.xtb b/components/strings/components_strings_sk.xtb index fb74395..b59e71cb 100644 --- a/components/strings/components_strings_sk.xtb +++ b/components/strings/components_strings_sk.xtb
@@ -1689,6 +1689,7 @@ <translation id="3990532701115075684">Sledovanie rúk</translation> <translation id="3992684624889376114">Táto stránka</translation> <translation id="3995639283717357522">Použiť pravidlá</translation> +<translation id="3996683183117168945"><ph name="CURRENT_CITATION" />. citácia z <ph name="MAX_CITATIONS" />, <ph name="PRODUCT_NAME" />, <ph name="URL" />. <ph name="PAGE_TITLE" />. <ph name="PAGE_PREVIEW" />.</translation> <translation id="399754345297554962">Štandardizované a postupové testy</translation> <translation id="3999173941208168054">Horory</translation> <translation id="4000598935132966791">Ďalšie informácie o obmedzeniach webov v spravovaných prehliadačoch</translation>
diff --git a/components/strings/components_strings_sl.xtb b/components/strings/components_strings_sl.xtb index 16b3cfb24..5318850 100644 --- a/components/strings/components_strings_sl.xtb +++ b/components/strings/components_strings_sl.xtb
@@ -3391,6 +3391,7 @@ <translation id="70705239631109039">Povezava ni v celoti varna</translation> <translation id="7075452647191940183">Zahteva je prevelika</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">Trgovine z živili</translation> <translation id="7083258188081898530">Pladenj 9</translation> <translation id="7086090958708083563">Nalaganje je zahteval uporabnik</translation> @@ -4115,6 +4116,7 @@ <translation id="833262891116910667">Označevanje</translation> <translation id="8339163506404995330">Strani v jeziku <ph name="LANGUAGE" /> ne bodo prevedene</translation> <translation id="8339275256517065202">Dokončanje nakupa s funkcijo Touch ID</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">Včlanitev navidezne kartice je odprta pri polni višini</translation> <translation id="8349305172487531364">Vrstica z zaznamki</translation>
diff --git a/components/strings/components_strings_sr-Latn.xtb b/components/strings/components_strings_sr-Latn.xtb index d0e2f54..06b3402b 100644 --- a/components/strings/components_strings_sr-Latn.xtb +++ b/components/strings/components_strings_sr-Latn.xtb
@@ -386,6 +386,7 @@ <translation id="1652415888492971589">JIS B8</translation> <translation id="1652862280638399816">Da biste koristili Menadžer lozinki sa macOS Keychain-om, ponovo pokrenite Chromium i dozvolite pristup Keychain-u. Kartice će se ponovo otvoriti posle ponovnog pokretanja.</translation> <translation id="1652887625750064647">Najbolje podudaranje pomoću veštačke inteligencije</translation> +<translation id="1653465303147789530">Plaćajte bez menjanja aplikacije pomoću: <ph name="PAYMENT_METHOD" /></translation> <translation id="1656024727720460136">Chrome je pojednostavio ovu stranicu radi lakšeg čitanja. Chrome je preuzeo originalnu stranicu preko bezbedne veze.</translation> <translation id="1656489000284462475">Preuzimanje</translation> <translation id="1658111267661135323">TV i video</translation> @@ -556,6 +557,7 @@ <translation id="1959001866257244765">Pomozite da poboljšamo bezbednost na vebu za sve tako što ćete slati <ph name="BEGIN_WHITEPAPER_LINK" />URL-ove nekih stranica koje posećujete, ograničene informacije o sistemu i određeni sadržaj stranica<ph name="END_WHITEPAPER_LINK" /> Google-u <ph name="BEGIN_PRIVACY_PAGE_LINK" />Politika privatnosti<ph name="END_PRIVACY_PAGE_LINK" /></translation> <translation id="1959445535228047762">Tekst i sadržaj stranice se šalju Google-u i mogu da se koriste za poboljšanje ove funkcije. <ph name="BEGIN_LINK" />Saznajte više<ph name="END_LINK" /></translation> +<translation id="196146181975453736">Obavite jednokratnu bezbednosnu proveru da biste brže plaćali</translation> <translation id="1962204205936693436"><ph name="DOMAIN" /> – obeleživači</translation> <translation id="1973335181906896915">Greška pri serijalizaciji</translation> <translation id="1973785048533660168">Kancelarijski i administrativni poslovi</translation> @@ -1585,6 +1587,7 @@ <translation id="378611282717571199">Najbolja podudaranja za „<ph name="SEARCH_QUERY" />“</translation> <translation id="3789155188480882154">Veličina 16</translation> <translation id="3789841737615482174">Instaliraj</translation> +<translation id="3791118028061680614">Plaćajte bez menjanja aplikacije</translation> <translation id="3792100426446126328"><ph name="NAME" /> (<ph name="WIDTH" />x<ph name="HEIGHT" /> in)</translation> <translation id="3792826587784915501">Kultni i indi filmovi</translation> <translation id="3793574014653384240">Broj nedavnih otkazivanja i razlozi</translation>
diff --git a/components/strings/components_strings_sr.xtb b/components/strings/components_strings_sr.xtb index 26df7263..320aab3 100644 --- a/components/strings/components_strings_sr.xtb +++ b/components/strings/components_strings_sr.xtb
@@ -386,6 +386,7 @@ <translation id="1652415888492971589">JIS B8</translation> <translation id="1652862280638399816">Да бисте користили Менаџер лозинки са macOS Keychain-ом, поново покрените Chromium и дозволите приступ Keychain-у. Картице ће се поново отворити после поновног покретања.</translation> <translation id="1652887625750064647">Најбоље подударање помоћу вештачке интелигенције</translation> +<translation id="1653465303147789530">Плаћајте без мењања апликације помоћу: <ph name="PAYMENT_METHOD" /></translation> <translation id="1656024727720460136">Chrome је поједноставио ову страницу ради лакшег читања. Chrome је преузео оригиналну страницу преко безбедне везе.</translation> <translation id="1656489000284462475">Преузимање</translation> <translation id="1658111267661135323">ТВ и видео</translation> @@ -556,6 +557,7 @@ <translation id="1959001866257244765">Помозите да побољшамо безбедност на вебу за све тако што ћете слати <ph name="BEGIN_WHITEPAPER_LINK" />URL-ове неких страница које посећујете, ограничене информације о систему и одређени садржај страница<ph name="END_WHITEPAPER_LINK" /> Google-у <ph name="BEGIN_PRIVACY_PAGE_LINK" />Политика приватности<ph name="END_PRIVACY_PAGE_LINK" /></translation> <translation id="1959445535228047762">Текст и садржај странице се шаљу Google-у и могу да се користе за побољшање ове функције. <ph name="BEGIN_LINK" />Сазнајте више<ph name="END_LINK" /></translation> +<translation id="196146181975453736">Обавите једнократну безбедносну проверу да бисте брже плаћали</translation> <translation id="1962204205936693436"><ph name="DOMAIN" /> – обележивачи</translation> <translation id="1973335181906896915">Грешка при серијализацији</translation> <translation id="1973785048533660168">Канцеларијски и административни послови</translation> @@ -1585,6 +1587,7 @@ <translation id="378611282717571199">Најбоља подударања за „<ph name="SEARCH_QUERY" />“</translation> <translation id="3789155188480882154">Величина 16</translation> <translation id="3789841737615482174">Инсталирај</translation> +<translation id="3791118028061680614">Плаћајте без мењања апликације</translation> <translation id="3792100426446126328"><ph name="NAME" /> (<ph name="WIDTH" />x<ph name="HEIGHT" /> in)</translation> <translation id="3792826587784915501">Култни и инди филмови</translation> <translation id="3793574014653384240">Број недавних отказивања и разлози</translation>
diff --git a/components/strings/components_strings_sw.xtb b/components/strings/components_strings_sw.xtb index c1fb3e7b..f08a1f8 100644 --- a/components/strings/components_strings_sw.xtb +++ b/components/strings/components_strings_sw.xtb
@@ -3391,6 +3391,7 @@ <translation id="70705239631109039">Muunganisho wako si salama kabisa</translation> <translation id="7075452647191940183">Ombi ni kubwa mno</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">Wauzaji wa Rejareja wa Chakula na Bidhaa za Kila Siku</translation> <translation id="7083258188081898530">Trei ya tisa</translation> <translation id="7086090958708083563">Mtumiaji ameomba kupakia</translation> @@ -4113,6 +4114,7 @@ <translation id="833262891116910667">Angazia</translation> <translation id="8339163506404995330">Kurasa za <ph name="LANGUAGE" /> hazitatafsiriwa</translation> <translation id="8339275256517065202">Kamilisha ununuzi wako ukitumia Touch ID</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">Uandikishaji wa kadi pepe umefunguliwa kwenye skrini nzima</translation> <translation id="8349305172487531364">Sehemu ya Alamisho</translation>
diff --git a/components/strings/components_strings_te.xtb b/components/strings/components_strings_te.xtb index 4c57c68b..6987d01 100644 --- a/components/strings/components_strings_te.xtb +++ b/components/strings/components_strings_te.xtb
@@ -3386,6 +3386,7 @@ <translation id="70705239631109039">మీ కనెక్షన్ పూర్తిగా సురక్షితమైనది కాదు</translation> <translation id="7075452647191940183">రిక్వెస్ట్ చాలా పెద్దదిగా ఉంది</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">ఆహారం & కిరాణా రిటైలర్లు</translation> <translation id="7083258188081898530">ట్రే 9</translation> <translation id="7086090958708083563">అప్లోడ్ను యూజర్ రిక్వెస్ట్ చేశారు</translation> @@ -4110,6 +4111,7 @@ <translation id="833262891116910667">హైలైట్ చేస్తుంది</translation> <translation id="8339163506404995330"><ph name="LANGUAGE" />లో ఉన్న పేజీలు అనువదించబడవు</translation> <translation id="8339275256517065202">Touch IDని ఉపయోగించి మీ కొనుగోలును పూర్తి చేయండి</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">వర్చువల్ కార్డ్ ఎన్రోల్మెంట్ పూర్తి ఎత్తులో తెరవబడింది</translation> <translation id="8349305172487531364">బుక్మార్క్ల బార్</translation>
diff --git a/components/strings/components_strings_th.xtb b/components/strings/components_strings_th.xtb index 835d786..a98b902 100644 --- a/components/strings/components_strings_th.xtb +++ b/components/strings/components_strings_th.xtb
@@ -3390,6 +3390,7 @@ <translation id="70705239631109039">การเชื่อมต่อไม่ปลอดภัยอย่างสมบูรณ์</translation> <translation id="7075452647191940183">คำขอมีขนาดใหญ่เกินไป</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">ร้านขายของชำและผู้จำหน่ายอาหาร</translation> <translation id="7083258188081898530">ถาด 9</translation> <translation id="7086090958708083563">ผู้ใช้ขอการอัปโหลด</translation> @@ -4114,6 +4115,7 @@ <translation id="833262891116910667">ไฮไลต์</translation> <translation id="8339163506404995330">ระบบจะไม่แปลหน้าเว็บภาษา<ph name="LANGUAGE" /></translation> <translation id="8339275256517065202">ทำการซื้อให้เสร็จสมบูรณ์โดยใช้ Touch ID</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">การลงทะเบียนบัตรเสมือนที่เปิดอยู่แบบเต็มความสูง</translation> <translation id="8349305172487531364">แถบบุ๊กมาร์ก</translation>
diff --git a/components/strings/components_strings_tr.xtb b/components/strings/components_strings_tr.xtb index 80d7c16..2c93dae6 100644 --- a/components/strings/components_strings_tr.xtb +++ b/components/strings/components_strings_tr.xtb
@@ -1693,6 +1693,7 @@ <translation id="3990532701115075684">Ellerinizi takip etme</translation> <translation id="3992684624889376114">Bu sayfa hakkında</translation> <translation id="3995639283717357522">Politika uygula</translation> +<translation id="3996683183117168945">Alıntı <ph name="CURRENT_CITATION" />/<ph name="MAX_CITATIONS" />, <ph name="PRODUCT_NAME" />, <ph name="URL" />. <ph name="PAGE_TITLE" />. <ph name="PAGE_PREVIEW" />.</translation> <translation id="399754345297554962">Standart Testler ve Giriş Sınavları</translation> <translation id="3999173941208168054">Korku Filmleri</translation> <translation id="4000598935132966791">Yönetilen tarayıcılardaki site kısıtlamaları hakkında daha fazla bilgi</translation>
diff --git a/components/strings/components_strings_ur.xtb b/components/strings/components_strings_ur.xtb index e18ee0d..9fc4d3c 100644 --- a/components/strings/components_strings_ur.xtb +++ b/components/strings/components_strings_ur.xtb
@@ -3393,6 +3393,7 @@ <translation id="70705239631109039">آپ کا کنکشن مکمل طور پر محفوظ نہیں ہے</translation> <translation id="7075452647191940183">درخواست کافی بڑی ہے</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">غذا اور گروسری ریٹیلرز</translation> <translation id="7083258188081898530">ٹرے 9</translation> <translation id="7086090958708083563">صارف کے ذریعے اپ لوڈ کی درخواست کی گئی</translation> @@ -4116,6 +4117,7 @@ <translation id="833262891116910667">ہائی لائٹ کریں</translation> <translation id="8339163506404995330"><ph name="LANGUAGE" /> کے صفحات کا ترجمہ نہیں کیا جائے گا</translation> <translation id="8339275256517065202">Touch ID استعمال کر کے اپنی خریداری مکمل کریں</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">ورچوئل کارڈ کا اندراج پوری اسکرین پر کھلا ہے</translation> <translation id="8349305172487531364">بُک مارکس بار</translation>
diff --git a/components/strings/components_strings_uz.xtb b/components/strings/components_strings_uz.xtb index fb3e47f..6b276b24 100644 --- a/components/strings/components_strings_uz.xtb +++ b/components/strings/components_strings_uz.xtb
@@ -385,6 +385,7 @@ <translation id="1652415888492971589">JIS B8</translation> <translation id="1652862280638399816">MacOS Keychain bilan Parol menejeridan foydalanish uchun Chromium brauzerini qayta ishga tushiring va Keychainʼdan foydalanish ruxsatini bering. Qayta ishga tushirilgandan keyin varaqlar qayta ochiladi.</translation> <translation id="1652887625750064647">AI tuzgan eng mosi</translation> +<translation id="1653465303147789530">Ilovalarni almashtirmay <ph name="PAYMENT_METHOD" /> orqali toʻlang</translation> <translation id="1656024727720460136">Mutolaani osonlashtirish uchun bu sahifa Chrome tomonidan soddalashtirildi. Chrome asl sahifani xavfsiz ulanish orqali yuklab oldi.</translation> <translation id="1656489000284462475">Olib ketish</translation> <translation id="1658111267661135323">TV va video</translation> @@ -555,6 +556,7 @@ <translation id="1959001866257244765"><ph name="BEGIN_WHITEPAPER_LINK" />Ochilgan sahifalar manzillari, tizim va sahifalar<ph name="END_WHITEPAPER_LINK" /> haqidagi ayrim maʼlumotlarni Google serverlariga yuborish orqali internetdagi xavfsizlik tizimini hamma uchun yaxshilashga yordam berasiz. <ph name="BEGIN_PRIVACY_PAGE_LINK" />Maxfiylik siyosati<ph name="END_PRIVACY_PAGE_LINK" /></translation> <translation id="1959445535228047762">Matn va sahifa kontenti Googlega yuboriladi va bu funksiyani yaxshilash maqsadida ishlatilishi mumkin. <ph name="BEGIN_LINK" />Batafsil<ph name="END_LINK" /></translation> +<translation id="196146181975453736">Tezroq toʻlash uchun bir martalik xavfsizlik tekshiruvini bajaring</translation> <translation id="1962204205936693436"><ph name="DOMAIN" /> xatcho‘plari</translation> <translation id="1973335181906896915">Seriyalashtirish amali bajarilmadi</translation> <translation id="1973785048533660168">Kanselyariya va administrativ vakansiyalar</translation> @@ -1580,6 +1582,7 @@ <translation id="378611282717571199">"<ph name="SEARCH_QUERY" />" uchun eng mos natijalar</translation> <translation id="3789155188480882154">Hajmi: 16</translation> <translation id="3789841737615482174">O‘rnatish</translation> +<translation id="3791118028061680614">Ilovalarni almashtirmasdan toʻlang</translation> <translation id="3792100426446126328"><ph name="NAME" /> (<ph name="WIDTH" /> x <ph name="HEIGHT" />)</translation> <translation id="3792826587784915501">Kult va indi filmlar</translation> <translation id="3793574014653384240">Oxirgi ishdan chiqishlar va ularning sabablari</translation>
diff --git a/components/strings/components_strings_vi.xtb b/components/strings/components_strings_vi.xtb index 479c106..f4a9372 100644 --- a/components/strings/components_strings_vi.xtb +++ b/components/strings/components_strings_vi.xtb
@@ -1693,6 +1693,7 @@ <translation id="3990532701115075684">Theo dõi cử chỉ tay của bạn</translation> <translation id="3992684624889376114">Giới thiệu về trang này</translation> <translation id="3995639283717357522">Áp dụng chính sách</translation> +<translation id="3996683183117168945">Lời trích dẫn <ph name="CURRENT_CITATION" />/<ph name="MAX_CITATIONS" />, <ph name="PRODUCT_NAME" />, <ph name="URL" />. <ph name="PAGE_TITLE" />. <ph name="PAGE_PREVIEW" />.</translation> <translation id="399754345297554962">Bài kiểm tra đầu vào và tiêu chuẩn hoá</translation> <translation id="3999173941208168054">Phim kinh dị</translation> <translation id="4000598935132966791">Tìm hiểu thêm về chế độ hạn chế trang web trong trình duyệt được quản lý</translation>
diff --git a/components/strings/components_strings_zh-CN.xtb b/components/strings/components_strings_zh-CN.xtb index 196a7e6..e1075b9 100644 --- a/components/strings/components_strings_zh-CN.xtb +++ b/components/strings/components_strings_zh-CN.xtb
@@ -3386,6 +3386,7 @@ <translation id="70705239631109039">您的连接存在安全隐患</translation> <translation id="7075452647191940183">请求过大</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">食品与杂货零售商</translation> <translation id="7083258188081898530">纸匣 9</translation> <translation id="7086090958708083563">用户已请求上传</translation> @@ -4110,6 +4111,7 @@ <translation id="833262891116910667">突出显示</translation> <translation id="8339163506404995330">系统不会自动翻译源语言为<ph name="LANGUAGE" />的网页</translation> <translation id="8339275256517065202">请使用触控 ID 完成购买交易</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">虚拟卡注册对话框已全屏打开</translation> <translation id="8349305172487531364">书签栏</translation>
diff --git a/components/strings/components_strings_zh-HK.xtb b/components/strings/components_strings_zh-HK.xtb index ae38ccc..acb815b 100644 --- a/components/strings/components_strings_zh-HK.xtb +++ b/components/strings/components_strings_zh-HK.xtb
@@ -3390,6 +3390,7 @@ <translation id="70705239631109039">您的連線並非完全安全</translation> <translation id="7075452647191940183">要求過大</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">食品和雜貨零售商</translation> <translation id="7083258188081898530">紙匣 9</translation> <translation id="7086090958708083563">使用者已要求上載</translation> @@ -4114,6 +4115,7 @@ <translation id="833262891116910667">突顯嘅內容</translation> <translation id="8339163506404995330">系統將不會自動翻譯來源語言為<ph name="LANGUAGE" />的網頁</translation> <translation id="8339275256517065202">使用 Touch ID 完成購買交易</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">虛擬卡註冊宜家顯示喺成個畫面</translation> <translation id="8349305172487531364">書籤列</translation>
diff --git a/components/strings/components_strings_zh-TW.xtb b/components/strings/components_strings_zh-TW.xtb index 87f8a5d..e0bdf4c 100644 --- a/components/strings/components_strings_zh-TW.xtb +++ b/components/strings/components_strings_zh-TW.xtb
@@ -3389,6 +3389,7 @@ <translation id="70705239631109039">你的連線可能有安全漏洞</translation> <translation id="7075452647191940183">要求過大</translation> <translation id="7078665357168027058">RA3</translation> +<translation id="7079699498125013497">\u0020\u2022\u0020</translation> <translation id="7081311540357715807">雜貨食品零售店</translation> <translation id="7083258188081898530">紙匣 9</translation> <translation id="7086090958708083563">使用者要求上傳</translation> @@ -4113,6 +4114,7 @@ <translation id="833262891116910667">醒目顯示</translation> <translation id="8339163506404995330">系統將不會翻譯<ph name="LANGUAGE" />網頁</translation> <translation id="8339275256517065202">使用 Touch ID 完成購買交易</translation> +<translation id="8339463238135163999"><ph name="DESCRIPTION" /><ph name="SEPARATOR" /><ph name="TIMESTMAP" /></translation> <translation id="8340095855084055290"><ph name="EXPIRATION_MONTH" />/<ph name="EXPIRATION_YEAR" /></translation> <translation id="8344776605855290140">虛擬卡片註冊對話方塊已開啟,並顯示在整個畫面上</translation> <translation id="8349305172487531364">書籤列</translation>
diff --git a/components/supervised_user/test_support/BUILD.gn b/components/supervised_user/test_support/BUILD.gn index 7ac77f5..3aba7ac 100644 --- a/components/supervised_user/test_support/BUILD.gn +++ b/components/supervised_user/test_support/BUILD.gn
@@ -42,38 +42,32 @@ } # Repository of test accounts is only supported for platforms that utilize end-to-end tests -if (is_win || is_ios || is_linux) { - source_set("account_repository") { - testonly = true - sources = [ - "account_repository.cc", - "account_repository.h", - ] - - deps = [ - "//base", - "//components/supervised_user/core/browser/proto", +source_set("account_repository") { + testonly = true + sources = [ + "account_repository.cc", + "account_repository.h", + ] + if (is_chrome_branded) { + data = [ + "//chrome/browser/internal/resources/supervised_user/ios_test_accounts.json", + "//chrome/browser/internal/resources/supervised_user/linux_test_accounts.json", + "//chrome/browser/internal/resources/supervised_user/win_test_accounts.json", ] } - source_set("account_repository_unit_tests") { - testonly = true + deps = [ + "//base", + "//components/supervised_user/core/browser/proto", + ] +} +source_set("account_repository_unit_tests") { + testonly = true + sources = [ "account_repository_unittest.cc" ] - sources = [ "account_repository_unittest.cc" ] - - deps = [ - ":account_repository", - "//base", - "//testing/gmock", - "//testing/gtest", - ] - - if (is_chrome_branded) { - sources += [ "account_repository_internal_unittest.cc" ] - data = [ - "//chrome/browser/internal/resources/supervised_user/ios_test_accounts.json", - "//chrome/browser/internal/resources/supervised_user/linux_test_accounts.json", - "//chrome/browser/internal/resources/supervised_user/win_test_accounts.json", - ] - } - } + deps = [ + ":account_repository", + "//base", + "//testing/gmock", + "//testing/gtest", + ] }
diff --git a/components/supervised_user/test_support/account_repository.cc b/components/supervised_user/test_support/account_repository.cc index 2dbe9a11..f5a7632 100644 --- a/components/supervised_user/test_support/account_repository.cc +++ b/components/supervised_user/test_support/account_repository.cc
@@ -22,35 +22,13 @@ namespace supervised_user { namespace { - -// Account repositories in files are only defined for platforms that support -// end-to-end tests. -const base::FilePath::StringPieceType kAccountRepositoryDirectory = - FILE_PATH_LITERAL("chrome/browser/internal/resources/supervised_user"); - -#if BUILDFLAG(IS_WIN) -const base::FilePath::StringPieceType kAccountRepositoryFileName = - FILE_PATH_LITERAL("win_test_accounts.json"); -#elif BUILDFLAG(IS_LINUX) -const base::FilePath::StringPieceType kAccountRepositoryFileName = - FILE_PATH_LITERAL("linux_test_accounts.json"); -#elif BUILDFLAG(IS_IOS) -const base::FilePath::StringPieceType kAccountRepositoryFileName = - FILE_PATH_LITERAL("ios_test_accounts.json"); -#else -#error Unsupported platform -#endif - -base::FilePath GetAbsolutePath( - const base::FilePath& account_repository_filename) { - base::FilePath root_path; - base::PathService::Get(base::DIR_SRC_TEST_DATA_ROOT, &root_path); - return base::MakeAbsoluteFilePath( - root_path.Append(kAccountRepositoryDirectory) - .Append(account_repository_filename)); -} - test_accounts::Repository ParseFromTestResource(base::FilePath path) { + if (!path.IsAbsolute()) { + base::FilePath root_path; + base::PathService::Get(base::DIR_SRC_TEST_DATA_ROOT, &root_path); + path = base::MakeAbsoluteFilePath(root_path.Append(path)); + } + int error_code = 0; std::string error_str; JSONFileValueDeserializer deserializer(path); @@ -93,14 +71,25 @@ return std::nullopt; } -TestAccountRepository::TestAccountRepository() - : TestAccountRepository( - GetAbsolutePath(base::FilePath(kAccountRepositoryFileName))) {} TestAccountRepository::TestAccountRepository(const base::FilePath& path) : repository_(ParseFromTestResource(path)) {} TestAccountRepository::~TestAccountRepository() = default; namespace test_accounts { + +std::optional<Feature> ParseFeature(std::string_view feature_name) { + static std::map<std::string_view, Feature> features{ + {"REGULAR", Feature::REGULAR}, + {"DMA_ELIGIBLE_WITH_CONSENT", Feature::DMA_ELIGIBLE_WITH_CONSENT}, + {"DMA_ELIGIBLE_WITHOUT_CONSENT", Feature::DMA_ELIGIBLE_WITHOUT_CONSENT}, + {"DMA_INELIGIBLE", Feature::DMA_INELIGIBLE}, + }; + if (features.count(feature_name) == 0) { + return std::nullopt; + } + return features.at(feature_name); +} + void Repository::RegisterJSONConverter( base::JSONValueConverter<Repository>* converter) { converter->RegisterRepeatedMessage<Family>("families", &Repository::families); @@ -112,18 +101,16 @@ &Family::ParseFeature); } bool Family::ParseFeature(std::string_view value, Feature* feature) { - static std::map<std::string_view, Feature> features{ - {"REGULAR", Feature::REGULAR}, - {"DMA_ELIGIBLE_WITH_CONSENT", Feature::DMA_ELIGIBLE_WITH_CONSENT}, - {"DMA_ELIGIBLE_WITHOUT_CONSENT", Feature::DMA_ELIGIBLE_WITHOUT_CONSENT}, - {"DMA_INELIGIBLE", Feature::DMA_INELIGIBLE}, - }; - if (features.count(value) == 0) { + std::optional<Feature> parsed = + ::supervised_user::test_accounts::ParseFeature(value); + if (!parsed.has_value()) { return false; } - *feature = features.at(value); + + *feature = *parsed; return true; } + void FamilyMember::RegisterJSONConverter( base::JSONValueConverter<FamilyMember>* converter) { converter->RegisterStringField("name", &FamilyMember::name); @@ -186,12 +173,6 @@ return *this; } Repository::~Repository() = default; - -bool IsDefaultAccountRepositoryAvailable() { - return base::PathExists( - GetAbsolutePath(base::FilePath(kAccountRepositoryFileName))); -} - } // namespace test_accounts } // namespace supervised_user
diff --git a/components/supervised_user/test_support/account_repository.h b/components/supervised_user/test_support/account_repository.h index d624477..a630298 100644 --- a/components/supervised_user/test_support/account_repository.h +++ b/components/supervised_user/test_support/account_repository.h
@@ -25,6 +25,10 @@ DMA_ELIGIBLE_WITHOUT_CONSENT, DMA_INELIGIBLE, }; + +// Converts a string literal to `Feature` value. +std::optional<Feature> ParseFeature(std::string_view feature_name); + struct FamilyMember { static void RegisterJSONConverter( base::JSONValueConverter<FamilyMember>* converter); @@ -70,12 +74,6 @@ std::vector<std::unique_ptr<Family>> families; }; - -#if defined(UNIT_TEST) -// Checks if default repository for the platform is available in the filesystem. -bool IsDefaultAccountRepositoryAvailable(); -#endif - } // namespace test_accounts // Returns first family member with requested role. @@ -86,9 +84,8 @@ // File-based repository of test accounts. Balances access to the accounts. class TestAccountRepository { public: - // Crashes if the backing file repository is ill-formatted. See the unit-tests - // for examples of valid spec. - TestAccountRepository(); + // Creates the repository from the path. If the path is relative, it will be + // based on DIR_SRC_TEST_DATA_ROOT. explicit TestAccountRepository(const base::FilePath& path); ~TestAccountRepository(); TestAccountRepository(const TestAccountRepository&) = delete;
diff --git a/components/supervised_user/test_support/account_repository_internal_unittest.cc b/components/supervised_user/test_support/account_repository_internal_unittest.cc deleted file mode 100644 index d95db55..0000000 --- a/components/supervised_user/test_support/account_repository_internal_unittest.cc +++ /dev/null
@@ -1,24 +0,0 @@ -// Copyright 2024 The Chromium Authors -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include <optional> - -#include "components/supervised_user/test_support/account_repository.h" -#include "testing/gmock/include/gmock/gmock.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace supervised_user { -namespace { -TEST(AccountRepositoryInternalTest, ProdConfigIsParseable) { - if (!test_accounts::IsDefaultAccountRepositoryAvailable()) { - GTEST_SKIP() << "Default repository not available"; - } - - TestAccountRepository repository; - std::optional<test_accounts::Family> family = - repository.GetRandomFamilyByFeature(test_accounts::Feature::REGULAR); - ASSERT_TRUE(family.has_value()); -} -} // namespace -} // namespace supervised_user
diff --git a/components/sync/base/features.cc b/components/sync/base/features.cc index 9980819e..f94b7222 100644 --- a/components/sync/base/features.cc +++ b/components/sync/base/features.cc
@@ -52,16 +52,6 @@ "SkipInvalidationOptimizationsWhenDeviceInfoUpdated", base::FEATURE_ENABLED_BY_DEFAULT); -BASE_FEATURE(kSyncEnableContactInfoDataTypeInTransportMode, - "SyncEnableContactInfoDataTypeInTransportMode", -#if BUILDFLAG(IS_IOS) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_WIN) || \ - BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) - base::FEATURE_ENABLED_BY_DEFAULT -#else - base::FEATURE_DISABLED_BY_DEFAULT -#endif -); - BASE_FEATURE(kSyncEnableContactInfoDataTypeForCustomPassphraseUsers, "SyncEnableContactInfoDataTypeForCustomPassphraseUsers", #if BUILDFLAG(IS_IOS) || BUILDFLAG(IS_ANDROID)
diff --git a/components/sync/base/features.h b/components/sync/base/features.h index 0ff2777..1817340 100644 --- a/components/sync/base/features.h +++ b/components/sync/base/features.h
@@ -59,7 +59,6 @@ // DeviceInfo has been updated. BASE_DECLARE_FEATURE(kSkipInvalidationOptimizationsWhenDeviceInfoUpdated); -BASE_DECLARE_FEATURE(kSyncEnableContactInfoDataTypeInTransportMode); BASE_DECLARE_FEATURE(kSyncEnableContactInfoDataTypeForCustomPassphraseUsers); BASE_DECLARE_FEATURE(kSyncEnableContactInfoDataTypeForDasherUsers);
diff --git a/components/sync/service/sync_prefs.cc b/components/sync/service/sync_prefs.cc index 7b93090..3bfc89e 100644 --- a/components/sync/service/sync_prefs.cc +++ b/components/sync/service/sync_prefs.cc
@@ -727,8 +727,7 @@ case UserSelectableType::kPasswords: return true; case UserSelectableType::kAutofill: - return base::FeatureList::IsEnabled( - kSyncEnableContactInfoDataTypeInTransportMode); + return true; case UserSelectableType::kPayments: // Always supported, since AUTOFILL_WALLET_DATA is supported in // transport mode everywhere.
diff --git a/components/sync/service/sync_prefs_unittest.cc b/components/sync/service/sync_prefs_unittest.cc index ba989e76..e43d7ea4 100644 --- a/components/sync/service/sync_prefs_unittest.cc +++ b/components/sync/service/sync_prefs_unittest.cc
@@ -463,7 +463,6 @@ #if !BUILDFLAG(IS_IOS) kReadingListEnableSyncTransportModeUponSignIn, #endif // !BUILDFLAG(IS_IOS) - kSyncEnableContactInfoDataTypeInTransportMode, kEnablePreferencesAccountStorage, kSyncEnableExtensionsInTransportMode}, /*disabled_features=*/{kReplaceSyncPromosWithSignInPromos}); @@ -497,7 +496,6 @@ #if !BUILDFLAG(IS_IOS) kReadingListEnableSyncTransportModeUponSignIn, #endif // !BUILDFLAG(IS_IOS) - kSyncEnableContactInfoDataTypeInTransportMode, kEnablePreferencesAccountStorage, kSyncEnableExtensionsInTransportMode}, /*disabled_features=*/{}); @@ -530,9 +528,7 @@ public: SyncPrefsExplicitBrowserSigninTest() { scoped_feature_list_.InitWithFeatures( - /*enabled_features=*/{syncer:: - kSyncEnableContactInfoDataTypeInTransportMode, - kSyncEnableExtensionsInTransportMode, + /*enabled_features=*/{kSyncEnableExtensionsInTransportMode, switches::kExplicitBrowserSigninUIOnDesktop}, /*disabled_features=*/{}); } @@ -866,7 +862,6 @@ #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS) switches::kExplicitBrowserSigninUIOnDesktop, #endif - kSyncEnableContactInfoDataTypeInTransportMode, kEnablePreferencesAccountStorage}, /*disabled_features=*/{});
diff --git a/components/sync/service/sync_service_impl_unittest.cc b/components/sync/service/sync_service_impl_unittest.cc index a850dc9..8b4b1a0 100644 --- a/components/sync/service/sync_service_impl_unittest.cc +++ b/components/sync/service/sync_service_impl_unittest.cc
@@ -653,8 +653,7 @@ scoped_feature_list.InitWithFeatures( /*enabled_features=*/ {syncer::kReplaceSyncPromosWithSignInPromos, - syncer::kSyncEnableContactInfoDataTypeForCustomPassphraseUsers, - syncer::kSyncEnableContactInfoDataTypeInTransportMode}, + syncer::kSyncEnableContactInfoDataTypeForCustomPassphraseUsers}, /*disabled_features=*/{}); // Sign-in. @@ -711,8 +710,7 @@ scoped_feature_list.InitWithFeatures( /*enabled_features=*/ {syncer::kReplaceSyncPromosWithSignInPromos, - syncer::kSyncEnableContactInfoDataTypeForCustomPassphraseUsers, - syncer::kSyncEnableContactInfoDataTypeInTransportMode}, + syncer::kSyncEnableContactInfoDataTypeForCustomPassphraseUsers}, /*disabled_features=*/{}); // Sign-in. @@ -777,11 +775,10 @@ scoped_feature_list.InitWithFeatures( /*enabled_features=*/ {syncer::kReplaceSyncPromosWithSignInPromos, - syncer::kSyncEnableContactInfoDataTypeForCustomPassphraseUsers, #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS) switches::kExplicitBrowserSigninUIOnDesktop, #endif - syncer::kSyncEnableContactInfoDataTypeInTransportMode}, + syncer::kSyncEnableContactInfoDataTypeForCustomPassphraseUsers}, /*disabled_features=*/{}); // Sign-in.
diff --git a/components/sync/service/sync_user_settings_impl_unittest.cc b/components/sync/service/sync_user_settings_impl_unittest.cc index af398704..bd15f53 100644 --- a/components/sync/service/sync_user_settings_impl_unittest.cc +++ b/components/sync/service/sync_user_settings_impl_unittest.cc
@@ -172,7 +172,6 @@ #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS) switches::kExplicitBrowserSigninUIOnDesktop, #endif - kSyncEnableContactInfoDataTypeInTransportMode, kEnablePreferencesAccountStorage}, /*disabled_features=*/{});
diff --git a/components/translate/core/browser/resources/translate.js b/components/translate/core/browser/resources/translate.js index ab83cd2..f657b4cb 100644 --- a/components/translate/core/browser/resources/translate.js +++ b/components/translate/core/browser/resources/translate.js
@@ -255,7 +255,7 @@ } if (!lib.getDetectedLanguage) { return 'und'; - } // Defined as translate::kUnknownLanguageCode in C++. + } // Defined as language_detection::kUnknownLanguageCode in C++. return lib.getDetectedLanguage(); },
diff --git a/components/translate/translate_internals/BUILD.gn b/components/translate/translate_internals/BUILD.gn index 06135a7f..4dc12fd1 100644 --- a/components/translate/translate_internals/BUILD.gn +++ b/components/translate/translate_internals/BUILD.gn
@@ -2,6 +2,8 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//ui/webui/resources/tools/build_webui.gni") + source_set("translate_internals") { sources = [ "translate_internals_handler.cc", @@ -18,3 +20,23 @@ "//ui/base", ] } + +build_webui("build") { + grd_prefix = "translate_internals" + + static_files = [ + "translate_internals.css", + "translate_internals.html", + ] + + non_web_component_files = [ "translate_internals.js" ] + + ts_deps = [ + "//ui/webui/resources/cr_elements:build_ts", + "//ui/webui/resources/js:build_ts", + ] + + webui_context_type = "trusted" + + grit_output_dir = "$root_gen_dir/components" +}
diff --git a/components/trusted_vault/securebox.cc b/components/trusted_vault/securebox.cc index cf72497b..2df777e 100644 --- a/components/trusted_vault/securebox.cc +++ b/components/trusted_vault/securebox.cc
@@ -59,7 +59,7 @@ std::vector<uint8_t> result(total_size); auto output_it = result.begin(); for (const base::span<const uint8_t>& span : bytes_spans) { - output_it = base::ranges::copy(span, output_it); + output_it = std::ranges::copy(span, output_it).out; } return result; }
diff --git a/components/trusted_vault/standalone_trusted_vault_backend.cc b/components/trusted_vault/standalone_trusted_vault_backend.cc index a95acae..c407401 100644 --- a/components/trusted_vault/standalone_trusted_vault_backend.cc +++ b/components/trusted_vault/standalone_trusted_vault_backend.cc
@@ -602,9 +602,9 @@ return !gaia_ids_in_cookie_jar.contains(gaia_id); }; - data_.mutable_user()->erase( - base::ranges::remove_if(*data_.mutable_user(), should_remove_user_data), - data_.mutable_user()->end()); + auto removed = + std::ranges::remove_if(*data_.mutable_user(), should_remove_user_data); + data_.mutable_user()->erase(removed.begin(), removed.end()); WriteDataToDisk(); } @@ -1162,9 +1162,9 @@ primary_account->gaia != GaiaId(per_user_data.gaia_id())); }; - data_.mutable_user()->erase( - base::ranges::remove_if(*data_.mutable_user(), should_remove_user_data), - data_.mutable_user()->end()); + auto removed = + std::ranges::remove_if(*data_.mutable_user(), should_remove_user_data); + data_.mutable_user()->erase(removed.begin(), removed.end()); WriteDataToDisk(); }
diff --git a/content/browser/browser_interface_binders.cc b/content/browser/browser_interface_binders.cc index 9d0eba7..1cd56cd9 100644 --- a/content/browser/browser_interface_binders.cc +++ b/content/browser/browser_interface_binders.cc
@@ -1429,6 +1429,19 @@ }, base::Unretained(host))); } + if (base::FeatureList::IsEnabled(blink::features::kLanguageDetectionAPI)) { + map->Add<language_detection::mojom::ContentLanguageDetectionDriver>( + base::BindRepeating( + [](DedicatedWorkerHost* host, + mojo::PendingReceiver< + language_detection::mojom::ContentLanguageDetectionDriver> + receiver) { + GetContentClient()->browser()->BindLanguageDetectionDriver( + host->GetProcessHost()->GetBrowserContext(), host, + std::move(receiver)); + }, + base::Unretained(host))); + } } void PopulateBinderMapWithContext( @@ -1519,6 +1532,19 @@ }, base::Unretained(host))); } + if (base::FeatureList::IsEnabled(blink::features::kLanguageDetectionAPI)) { + map->Add<language_detection::mojom::ContentLanguageDetectionDriver>( + base::BindRepeating( + [](SharedWorkerHost* host, + mojo::PendingReceiver< + language_detection::mojom::ContentLanguageDetectionDriver> + receiver) { + GetContentClient()->browser()->BindLanguageDetectionDriver( + host->GetProcessHost()->GetBrowserContext(), host, + std::move(receiver)); + }, + base::Unretained(host))); + } // RenderProcessHost binders map->Add<media::mojom::VideoDecodePerfHistory>(BindWorkerReceiver( @@ -1661,6 +1687,22 @@ }, base::Unretained(host))); } + if (base::FeatureList::IsEnabled(blink::features::kLanguageDetectionAPI)) { + map->Add<language_detection::mojom::ContentLanguageDetectionDriver>( + base::BindRepeating( + [](ServiceWorkerHost* host, + mojo::PendingReceiver< + language_detection::mojom::ContentLanguageDetectionDriver> + receiver) { + if (auto* process_host = static_cast<RenderProcessHostImpl*>( + RenderProcessHost::FromID(host->worker_process_id()))) { + GetContentClient()->browser()->BindLanguageDetectionDriver( + process_host->GetBrowserContext(), host, + std::move(receiver)); + } + }, + base::Unretained(host))); + } // RenderProcessHost binders map->Add<media::mojom::VideoDecodePerfHistory>(BindServiceWorkerReceiver(
diff --git a/content/test/gpu/gpu_tests/gpu_integration_test.py b/content/test/gpu/gpu_tests/gpu_integration_test.py index c7345377..e70cfa3 100644 --- a/content/test/gpu/gpu_tests/gpu_integration_test.py +++ b/content/test/gpu/gpu_tests/gpu_integration_test.py
@@ -863,6 +863,17 @@ finally: self.additionalTags[TEST_WAS_SLOW] = json.dumps(self._TestWasSlow()) self._ReportAboutGpu(test_name) + self._OnAfterTest(args) + + def _OnAfterTest(self, args: ct.TestArgs) -> None: + """Called at the end of _RunGpuTest. + + Meant to be overridden by subclasses to perform actions that cannot be done + during the actual test for whatever reason. + + Args: + args: The same arguments that the test was run with. + """ def _ReportAboutGpu(self, test_name: str) -> None: """Report the cached about:gpu content as an artifact. @@ -982,7 +993,7 @@ number_of_crashes = -1 system_info = self.browser.GetSystemInfo() number_of_crashes = \ - system_info.gpu.aux_attributes[u'process_crash_count'] + system_info.gpu.aux_attributes['process_crash_count'] retval = True if number_of_crashes != total_expected_crashes:
diff --git a/content/test/gpu/gpu_tests/pixel_integration_test.py b/content/test/gpu/gpu_tests/pixel_integration_test.py index a3dfc86..abaabb1e 100644 --- a/content/test/gpu/gpu_tests/pixel_integration_test.py +++ b/content/test/gpu/gpu_tests/pixel_integration_test.py
@@ -134,6 +134,17 @@ action.Run(test_case, tab_data, loop_state, self) self._RunSkiaGoldBasedPixelTest(test_case) + def _OnAfterTest(self, args: ct.TestArgs) -> None: + """Conditionally restarts the browser after the test is finished. + + This must be done as a post-test hook instead of at the end of the test + method because restarting wipes crash data, but expected crash checks are + performed after RunActualGpuTest finishes. + + Args: + args: The same arguments that the test was run with. + """ + test_case = args[0] if (test_case.used_custom_test_actions or test_case.restart_browser_after_test): self._RestartBrowser( @@ -157,7 +168,14 @@ process. """ # args[0] is the PixelTestPage for the current test. - return args[0].expected_per_process_crashes + crashes_by_platform = args[0].expected_per_process_crashes + os_name = self.platform.GetOSName() + # Get any platform-specific crashes counts, falling back to the one for all + # platforms. + return crashes_by_platform.get( + os_name, + crashes_by_platform.get( + pixel_test_pages.EXPECTED_CRASHES_PLATFORM_DEFAULT, {})) def _RunSkiaGoldBasedPixelTest( self, test_case: pixel_test_pages.PixelTestPage) -> None:
diff --git a/content/test/gpu/gpu_tests/pixel_test_pages.py b/content/test/gpu/gpu_tests/pixel_test_pages.py index 189d1bd3..f8d40f5 100644 --- a/content/test/gpu/gpu_tests/pixel_test_pages.py +++ b/content/test/gpu/gpu_tests/pixel_test_pages.py
@@ -32,6 +32,9 @@ CRASH_TYPE_GPU = 'gpu-process' CRASH_TYPE_RENDERER = 'renderer' +EXPECTED_CRASHES_PLATFORM_DEFAULT = '' +EXPECTED_CRASHES_PLATFORM_FUCHSIA = 'fuchsia' + SHORT_GLOBAL_TIMEOUT = 30 # Meant to be used when we know a test is going to be noisy, and we want any @@ -71,7 +74,7 @@ browser_args: Optional[BrowserArgType] = None, restart_browser_after_test: bool = False, other_args: Optional[dict] = None, - expected_per_process_crashes: Optional[Dict[str, int]] = None, + expected_per_process_crashes: Optional[Dict[str, Dict[str, int]]] = None, timeout: int = 300, should_capture_full_screenshot_func: Optional[Callable[ [browser_module.Browser], bool]] = None, @@ -95,8 +98,8 @@ # full_size. self.other_args = other_args # This lets the test runner know that one or more crashes are expected as - # part of the test. Should be a map of process type (str) to expected number - # of crashes (int). + # part of the test. Should be a map of platform name (str) to a map of + # process type (str) to crashes (int) self.expected_per_process_crashes = expected_per_process_crashes or {} # Test timeout self.timeout = timeout @@ -343,7 +346,17 @@ sghitb.TestActionWaitForContinue(SHORT_GLOBAL_TIMEOUT), TestActionCrashGpuProcess(), sghitb.TestActionWaitForFinish(SHORT_GLOBAL_TIMEOUT), - ]), + ], + expected_per_process_crashes={ + # Fuchsia is special cased due to the way it checks for crashes + # (asking the browser) vs. how other platforms handle it + # (looking for minidumps). The method for crashing the GPU + # process in this test is recorded as a crash but does not + # generate a minidump. + EXPECTED_CRASHES_PLATFORM_FUCHSIA: { + CRASH_TYPE_GPU: 1, + }, + }), PixelTestPage( 'pixel_webgl_sad_canvas.html', base_name + '_WebGLSadCanvas', @@ -354,7 +367,17 @@ sghitb.TestActionWaitForContinue(SHORT_GLOBAL_TIMEOUT), TestActionCrashGpuProcess(), sghitb.TestActionWaitForFinish(SHORT_GLOBAL_TIMEOUT), - ]), + ], + expected_per_process_crashes={ + # Fuchsia is special cased due to the way it checks for crashes + # (asking the browser) vs. how other platforms handle it + # (looking for minidumps). The method for crashing the GPU + # process in this test is recorded as a crash but does not + # generate a minidump. + EXPECTED_CRASHES_PLATFORM_FUCHSIA: { + CRASH_TYPE_GPU: 2, + }, + }), PixelTestPage('pixel_scissor.html', base_name + '_ScissorTestWithPreserveDrawingBuffer', crop_action=standard_crop), @@ -459,8 +482,11 @@ max_different_pixels=31700, pixel_per_channel_delta_threshold=10), expected_per_process_crashes={ - CRASH_TYPE_GPU: 1, - }), + EXPECTED_CRASHES_PLATFORM_DEFAULT: { + CRASH_TYPE_GPU: 1, + }, + }, + restart_browser_after_test=True), # The VP9 test clip is primarily software decoded on bots. PixelTestPage(('pixel_video_context_loss.html' @@ -473,8 +499,11 @@ edge_threshold=250, ignored_border_thickness=1), expected_per_process_crashes={ - CRASH_TYPE_GPU: 1, - }), + EXPECTED_CRASHES_PLATFORM_DEFAULT: { + CRASH_TYPE_GPU: 1, + }, + }, + restart_browser_after_test=True), PixelTestPage( 'pixel_video_backdrop_filter.html?width=240&height=135&use_timer=1', base_name + '_Video_BackdropFilter',
diff --git a/docs/telemetry_extension/api_overview.md b/docs/telemetry_extension/api_overview.md index 6c8cb9f..33ac372 100644 --- a/docs/telemetry_extension/api_overview.md +++ b/docs/telemetry_extension/api_overview.md
@@ -641,11 +641,31 @@ ------------ | ------- | ----------- | | uuid | string | UUID of the routine that entered this state | +### Enum NetworkBandwidthRoutineRunningType +| Property Name | +------------ | +| download | +| upload | + +### NetworkBandwidthRoutineRunningInfo +| Property Name | Type | Description | +------------ | ------- | ----------- | +| type | NetworkBandwidthRoutineRunningType | The type of test that routine is running | +| speedKbps | number | The current network speed in Kbit/s | + +### RoutineRunningInfoUnion +This is a [union type](#Dictionary_based-union-types). Exactly one field is set. + +| Property Name | Type | Description | +------------ | ------- | ----------- | +| networkBandwidth | NetworkBandwidthRoutineRunningInfo | Extra detail for a running network bandwidth routine | + ### RoutineRunningInfo | Property Name | Type | Description | ------------ | ------- | ----------- | | uuid | string | UUID of the routine that entered this state | | percentage | number | Current percentage of the routine status (0-100) | +| info | RoutineRunningInfoUnion | Extra details about a running routine | ### CheckLedLitUpStateInquiry Details regarding the inquiry to check the LED lit up state. Clients should @@ -708,6 +728,7 @@ ------------ | ------- | ----------- | | memory | MemoryRoutineFinishedDetail | Extra detail for a finished memory routine | | fan | FanRoutineFinishedDetail | Extra detail for a finished fan routine | +| networkBandwidth | NetworkBandwidthRoutineFinishedDetail | Extra detail for a finished network bandwidth routine | | cameraFrameAnalysis | CameraFrameAnalysisRoutineFinishedDetail | Extra detail for a finished camera frame analysis routine | ### MemtesterResult @@ -803,6 +824,12 @@ | Property Name | Type | Description | ------------ | ------- | ----------- | +### NetworkBandwidthRoutineFinishedDetail +| Property Name | Type | Description | +------------ | ------- | ----------- | +| downloadSpeedKbps | number | Average download speed in Kbit/s | +| uploadSpeedKbps | number | Average upload speed in Kbit/s | + ### Enum LedName | Property Name | ------------ |
diff --git a/ios/chrome/app/BUILD.gn b/ios/chrome/app/BUILD.gn index 3dc8f56b8..4c97d53 100644 --- a/ios/chrome/app/BUILD.gn +++ b/ios/chrome/app/BUILD.gn
@@ -560,7 +560,10 @@ } source_set("change_profile_continuation") { - sources = [ "change_profile_continuation.h" ] + sources = [ + "change_profile_continuation.h", + "change_profile_continuation.mm", + ] deps = [ "//base" ] } @@ -571,6 +574,7 @@ ] deps = [ ":change_profile_commands", + ":change_profile_continuation", "//base", "//ios/chrome/app/profile", "//ios/chrome/browser/shared/coordinator/scene:scene_state_header",
diff --git a/ios/chrome/app/change_profile_animator.h b/ios/chrome/app/change_profile_animator.h index 0bf153e..23c74f8 100644 --- a/ios/chrome/app/change_profile_animator.h +++ b/ios/chrome/app/change_profile_animator.h
@@ -9,13 +9,11 @@ #import "base/functional/callback_forward.h" #import "ios/chrome/app/change_profile_commands.h" +#import "ios/chrome/app/change_profile_continuation.h" #import "ios/chrome/app/profile/profile_init_stage.h" @class SceneState; -// Callback invoked when the profile has reached the requested init stage. -using ChangeProfileCompletion = base::OnceCallback<void(SceneState*)>; - // Object responsible for animating the transition between profile for a // given scene for MainController. @interface ChangeProfileAnimator : NSObject @@ -39,7 +37,7 @@ // ProfileState reach the stage or is deallocated. - (void)waitForSceneState:(SceneState*)sceneState toInitReachStage:(ProfileInitStage)initStage - completion:(ChangeProfileCompletion)completion; + continuation:(ChangeProfileContinuation)continuation; @end
diff --git a/ios/chrome/app/change_profile_animator.mm b/ios/chrome/app/change_profile_animator.mm index 95e5c4f..6722282 100644 --- a/ios/chrome/app/change_profile_animator.mm +++ b/ios/chrome/app/change_profile_animator.mm
@@ -13,6 +13,18 @@ #import "ios/chrome/app/profile/profile_state_observer.h" #import "ios/chrome/browser/shared/coordinator/scene/scene_state.h" +namespace { + +// Invokes `continuation` if `weak_scene_state` is not nil. +void InvokeChangeProfileContinuation(ChangeProfileContinuation continuation, + __weak SceneState* weak_scene_state) { + if (SceneState* strong_scene_state = weak_scene_state) { + std::move(continuation).Run(strong_scene_state, base::DoNothing()); + } +} + +} // namespace + @interface ChangeProfileAnimator () <ProfileStateObserver> @end @@ -20,7 +32,7 @@ __weak UIViewController* _viewController; __weak SceneState* _sceneState; ProfileInitStage _minimumInitStage; - ChangeProfileCompletion _completion; + ChangeProfileContinuation _continuation; } - (instancetype)initWithViewController:(UIViewController*)viewController { @@ -38,12 +50,12 @@ - (void)waitForSceneState:(SceneState*)sceneState toInitReachStage:(ProfileInitStage)initStage - completion:(ChangeProfileCompletion)completion { - DCHECK(completion); + continuation:(ChangeProfileContinuation)continuation { + DCHECK(continuation); DCHECK(sceneState.profileState); _sceneState = sceneState; - _completion = std::move(completion); + _continuation = std::move(continuation); _minimumInitStage = initStage; ProfileState* profileState = sceneState.profileState; @@ -93,7 +105,8 @@ // the profile was already in the expected stage. This does not strongly // captures SceneState since _sceneDelete is a weak pointer. base::SequencedTaskRunner::GetCurrentDefault()->PostTask( - FROM_HERE, base::BindOnce(std::move(_completion), _sceneState)); + FROM_HERE, base::BindOnce(&InvokeChangeProfileContinuation, + std::move(_continuation), _sceneState)); } // Returns a unique pointer that can be used to attach the current instance
diff --git a/ios/chrome/app/change_profile_commands.h b/ios/chrome/app/change_profile_commands.h index b4669962..5d6e72c8 100644 --- a/ios/chrome/app/change_profile_commands.h +++ b/ios/chrome/app/change_profile_commands.h
@@ -8,6 +8,7 @@ #import <Foundation/Foundation.h> #import <string_view> +#import <vector> #import "ios/chrome/app/change_profile_continuation.h" @@ -28,11 +29,11 @@ // is disabled or not available (on iOS < 17), if creating the profile is // impossible or fails, or if no scene named `sceneIdentifier` exists. // -// The continuations will be called asynchronously, in sequence, when the -// profile has been switched for the SceneState. +// The continuation will be called asynchronously, when the profile has +// been switched for the SceneState. - (void)changeProfile:(std::string_view)profileName forScene:(SceneState*)sceneState - continuations:(NSArray<id<ChangeProfileContinuation>>*)continuations; + continuation:(ChangeProfileContinuation)continuation; @end
diff --git a/ios/chrome/app/change_profile_continuation.h b/ios/chrome/app/change_profile_continuation.h index 01ed38f..0151a89 100644 --- a/ios/chrome/app/change_profile_continuation.h +++ b/ios/chrome/app/change_profile_continuation.h
@@ -5,16 +5,10 @@ #ifndef IOS_CHROME_APP_CHANGE_PROFILE_CONTINUATION_H_ #define IOS_CHROME_APP_CHANGE_PROFILE_CONTINUATION_H_ -#import <Foundation/Foundation.h> - #import "base/functional/callback_forward.h" @class SceneState; -// Represents an action to execute after the profile for a SceneState -// has been changed. -@protocol ChangeProfileContinuation <NSObject> - // Invoked when the SceneState has transitioned to the new Profile and // the profile has reached the ProfileInitStage::kUIReady (or higher) // stage. @@ -25,9 +19,13 @@ // The completion may be called synchronously or asynchronously if the // operation needs to block (e.g. needs to wait for some other external // condition before it can resume). -- (void)executeWithSceneState:(SceneState*)sceneState - completion:(base::OnceClosure)completion; +using ChangeProfileContinuation = + base::OnceCallback<void(SceneState*, base::OnceClosure)>; -@end +// Returns a new ChangeProfileContinuation that first invoke `contination1` +// and then invoke `continuation2`. +ChangeProfileContinuation ChainChangeProfileContinuations( + ChangeProfileContinuation continuation1, + ChangeProfileContinuation continuation2); #endif // IOS_CHROME_APP_CHANGE_PROFILE_CONTINUATION_H_
diff --git a/ios/chrome/app/change_profile_continuation.mm b/ios/chrome/app/change_profile_continuation.mm new file mode 100644 index 0000000..6af25c70 --- /dev/null +++ b/ios/chrome/app/change_profile_continuation.mm
@@ -0,0 +1,49 @@ +// Copyright 2025 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "ios/chrome/app/change_profile_continuation.h" + +#import "base/check.h" +#import "base/functional/bind.h" +#import "base/functional/callback.h" +#import "base/task/bind_post_task.h" +#import "base/task/sequenced_task_runner.h" + +namespace { + +// Helper to chain two continuations. +void ChainChangeProfileContinuationsImpl( + const scoped_refptr<base::SequencedTaskRunner>& task_runner, + ChangeProfileContinuation continuation1, + ChangeProfileContinuation continuation2, + SceneState* scene_state, + base::OnceClosure closure) { + // Abort the chain if the SceneState has been deallocated (chaining uses + // a weak pointer, so it is possible to end up in that state if the app + // shuts down during a profile switching). + if (!scene_state) { + return; + } + + __weak SceneState* weak_scene_state = scene_state; + std::move(continuation1) + .Run(scene_state, + base::BindPostTask( + task_runner, + base::BindOnce(std::move(continuation2), weak_scene_state, + std::move(closure)))); +} + +} // anonymous namespace + +ChangeProfileContinuation ChainChangeProfileContinuations( + ChangeProfileContinuation continuation1, + ChangeProfileContinuation continuation2) { + CHECK(continuation1); + CHECK(continuation2); + + return base::BindOnce(&ChainChangeProfileContinuationsImpl, + base::SequencedTaskRunner::GetCurrentDefault(), + std::move(continuation1), std::move(continuation2)); +}
diff --git a/ios/chrome/app/main_controller.mm b/ios/chrome/app/main_controller.mm index 7c766fff..d458ec9 100644 --- a/ios/chrome/app/main_controller.mm +++ b/ios/chrome/app/main_controller.mm
@@ -276,41 +276,6 @@ sessions_storage_util::ResetDiscardedSessions(); } -// Runs the continuation at `index` with SceneState. -void RunContinuationAtIndex( - NSArray<id<ChangeProfileContinuation>>* continuations, - NSUInteger index, - __weak SceneState* scene) { - CHECK(continuations); - CHECK_LT(index, continuations.count); - - // If the SceneState is nil, then do not run the continuations. This - // can happen for multiple reasons such as the app terminating, the - // user closing one of the windows, another profile change, ... - SceneState* strong_scene = scene; - if (!strong_scene) { - return; - } - - // If there are other continuations after this one, create a closure - // that will invoke the next one, and pass it to the continuation to - // run. It needs to bind the weak pointer to the SceneState, not the - // strong pointer. Use BindPostTask(...) since the implementation of - // -executeWithSceneState:completion: may not call the completion - // asynchronously. - base::OnceClosure closure = base::DoNothing(); - if (index + 1 < continuations.count) { - closure = - base::BindPostTask(base::SequencedTaskRunner::GetCurrentDefault(), - base::BindOnce(&RunContinuationAtIndex, - continuations, index + 1, scene)); - } - - id<ChangeProfileContinuation> continuation = continuations[index]; - [continuation executeWithSceneState:strong_scene - completion:std::move(closure)]; -} - } // namespace @interface MainController () <AppStateObserver, @@ -1542,21 +1507,7 @@ - (void)changeProfile:(std::string_view)profileName forScene:(SceneState*)sceneState - continuations:(NSArray<id<ChangeProfileContinuation>>*)continuations { - ChangeProfileCompletion completion = base::DoNothing(); - if (continuations.count != 0) { - completion = base::BindOnce(&RunContinuationAtIndex, continuations, 0); - } - [self changeProfile:profileName - forScene:sceneState - completion:std::move(completion)]; -} - -#pragma mark - Private - -- (void)changeProfile:(std::string_view)profileName - forScene:(SceneState*)sceneState - completion:(ChangeProfileCompletion)completion { + continuation:(ChangeProfileContinuation)continuation { CHECK(AreSeparateProfilesForManagedAccountsEnabled()); CHECK_EQ(self.appState.initStage, AppInitStage::kFinal); @@ -1634,7 +1585,7 @@ // Wait for the profile to complete its initialisation. [animator waitForSceneState:sceneState toInitReachStage:ProfileInitStage::kUIReady - completion:std::move(completion)]; + continuation:std::move(continuation)]; } // Attach a Profile to all connected scenes.
diff --git a/ios/chrome/app/resources/ios_resources.grd b/ios/chrome/app/resources/ios_resources.grd index 3d59ba6..c79b1db 100644 --- a/ios/chrome/app/resources/ios_resources.grd +++ b/ios/chrome/app/resources/ios_resources.grd
@@ -13,9 +13,6 @@ <include name="IDR_IOS_ON_DEVICE_LLM_INTERNALS_HTML" file="../../browser/optimization_guide/resources/on_device_llm_internals.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" /> <include name="IDR_IOS_OMAHA_HTML" file="omaha/omaha.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" /> <include name="IDR_IOS_OMAHA_JS" file="omaha/omaha.js" type="BINDATA" /> - <include name="IDR_IOS_TRANSLATE_INTERNALS_CSS" file="../../../../components/translate/translate_internals/translate_internals.css" type="BINDATA" /> - <include name="IDR_IOS_TRANSLATE_INTERNALS_HTML" file="../../../../components/translate/translate_internals/translate_internals.html" type="BINDATA" /> - <include name="IDR_IOS_TRANSLATE_INTERNALS_JS" file="../../../../components/translate/translate_internals/translate_internals.js" preprocess="true" type="BINDATA" /> </includes> </release> </grit>
diff --git a/ios/chrome/app/strings/resources/ios_strings_am.xtb b/ios/chrome/app/strings/resources/ios_strings_am.xtb index f6ce5fc..ca6910e 100644 --- a/ios/chrome/app/strings/resources/ios_strings_am.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_am.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{የይለፍ ቃል በእርስዎ Google መለያ {EMAIL} ውስጥ ተቀምጧል}one{የይለፍ ቃል በእርስዎ Google መለያ {EMAIL} ውስጥ ተቀምጧል}other{የይለፍ ቃላት በእርስዎ Google መለያ {EMAIL} ውስጥ ተቀምጠዋል}}</translation> <translation id="2791174088547598693">የይለፍ ቃል አክል…</translation> <translation id="2797302972324086597">የአገር ኮድ</translation> +<translation id="2802403747691280910"><ph name="NUMBER_OF_TABS_REMOVED" /> ተዘግቷል</translation> <translation id="2816489851009559785">ምናሌ → ቅንብሮች → ነባሪ አሳሽ</translation> <translation id="2818821771744632548">እንደ የእርስዎ iPhone ዳግም ማስጀመር አንድ አካል ከመለያዎ <ph name="USER_NAME" /> ዘግተው ወጥተዋል። ተመልሰው በመለያ ለመግባት ከታች «ቀጥል»ን መታ ያድርጉ።</translation> <translation id="2819667972867209401">ሲበራ ውሂብ በGoogle መለያዎ ውስጥ ይቀመጣል። ሲጠፋ ውሂቡ የሚቀመጠው በዚህ መሣሪያ ላይ ብቻ ነው እና ዘግተው ከወጡ ይሰረዛል።</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">ይሞክሩ</translation> <translation id="797588153137233716">ምናሌ → ታሪክ → የአሰሳ ውሂብን ሰርዝ</translation> <translation id="7977451675950311423">በውሂብ ጥሰት ውስጥ የተጠለፈ የይለፍ ቃል ከተጠቀሙ ያስጠነቅቅዎታል።</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> አዲስ ትሮች፣ <ph name="NUMBER_OF_TABS_REMOVED" /> ተዘግተዋል</translation> <translation id="797824194429476746">ትሮች በዚህ መሣሪያ ላይ ክፍት እንደሆኑ ይቆያሉ፣ ነገር ግን ቡድኑ እስከመጨረሻው ይሰረዛል።</translation> <translation id="7982789257301363584">አውታረ መረብ</translation> <translation id="7987685713885608670">ለታከለው ደህንነት በመሣሪያዎ ላይ ያሉ የይለፍ ቃላትን ወደ Google የይለፍ ቃል አስተዳዳሪ ከመቀመጣቸው በፊት ያመስጥሩ።</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">ሁሉንም ዝጋ</translation> <translation id="8730621377337864115">ተከናውኗል</translation> <translation id="87371078663613140">በምናሌ አሞሌው ውስጥ ያሉትን አማራጮች ያስሱ</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> አዲስ ትሮች</translation> <translation id="8741627442233023406">{count,plural, =1{ትሩን ይገምግሙ…}one{ሁሉንም ትር ይገምግሙ…}other{ሁሉንም ትር ይገምግሙ…}}</translation> <translation id="8741995161408053644">የእርስዎ Google መለያ <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> ላይ ሌሎች የአሰሳ ታሪክ ዓይነቶች ሊኖረው ይችላል።</translation> <translation id="874599634440689554">አገናኝ ፍጠር</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ar.xtb b/ios/chrome/app/strings/resources/ios_strings_ar.xtb index 001cd73..aaa3f92 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ar.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ar.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{تم حفظ كلمة المرور في حسابك على Google، {EMAIL}.}zero{تم حفظ كلمات المرور في حسابك على Google، {EMAIL}.}two{تم حفظ كلمتَيْ المرور في حسابك على Google، {EMAIL}.}few{تم حفظ كلمات المرور في حسابك على Google، {EMAIL}.}many{تم حفظ كلمات المرور في حسابك على Google، {EMAIL}.}other{تم حفظ كلمات المرور في حسابك على Google، {EMAIL}.}}</translation> <translation id="2791174088547598693">إضافة كلمة مرور…</translation> <translation id="2797302972324086597">رمز البلد</translation> +<translation id="2802403747691280910">تم إغلاق <ph name="NUMBER_OF_TABS_REMOVED" /></translation> <translation id="2816489851009559785">"القائمة" ← "الإعدادات" ← "المتصفِّح التلقائي"</translation> <translation id="2818821771744632548">تم تسجيل خروج حسابك <ph name="USER_NAME" /> كجزء من عملية إعادة ضبط هاتف iPhone. لإعادة تسجيل الدخول، انقر على "متابعة" أدناه.</translation> <translation id="2819667972867209401">عند تفعيل هذا الخيار، يتم حفظ البيانات في حسابك على Google. وعند إيقافه، سيتم حفظ البيانات على هذا الجهاز فقط وحذفها عند تسجيل الخروج.</translation> @@ -1572,6 +1573,7 @@ <translation id="7975036700432177008">تجربة</translation> <translation id="797588153137233716">"القائمة" ← "السجلّ" ← "حذف بيانات التصفّح"</translation> <translation id="7977451675950311423">ستتلقّى تحذيرًا إذا كنت تستخدم كلمة مرور تم اختراقها في عملية اختراق للبيانات.</translation> +<translation id="7977482887663636093">عدد علامات التبويب الجديدة: <ph name="NUMBER_OF_TABS_ADDED" />، تم إغلاق <ph name="NUMBER_OF_TABS_REMOVED" /></translation> <translation id="797824194429476746">ستظل علامات التبويب مفتوحة على هذا الجهاز، ولكن سيتم حذف المجموعة نهائيًا.</translation> <translation id="7982789257301363584">الشبكة</translation> <translation id="7987685713885608670">لتوفير مزيد من الأمان، يتم تشفير كلمات المرور على جهازك قبل حفظها في "مدير كلمات المرور" من Google.</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">إغلاق الكل</translation> <translation id="8730621377337864115">تم</translation> <translation id="87371078663613140">اطّلِع على الخيارات في شريط القوائم.</translation> +<translation id="8739706427581741437">عدد علامات التبويب الجديدة: <ph name="NUMBER_OF_TABS_ADDED" /></translation> <translation id="8741627442233023406">{count,plural, =1{مراجعة علامة التبويب…}zero{مراجعة جميع علامات التبويب…}two{مراجعة علامتَي التبويب…}few{مراجعة جميع علامات التبويب…}many{مراجعة جميع علامات التبويب…}other{مراجعة جميع علامات التبويب…}}</translation> <translation id="8741995161408053644">قد يتضمّن حسابك على Google نماذج أخرى من سجلّ التصفّح في <ph name="BEGIN_LINK" /> history.google.com <ph name="END_LINK" />.</translation> <translation id="874599634440689554">إنشاء رابط</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_az.xtb b/ios/chrome/app/strings/resources/ios_strings_az.xtb index 5edc7891..a0972eb 100644 --- a/ios/chrome/app/strings/resources/ios_strings_az.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_az.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{Parol Google Hesabında ({EMAIL}) yadda saxlandı}other{Parollar Google Hesabında ({EMAIL}) yadda saxlandı}}</translation> <translation id="2791174088547598693">Parol əlavə edin…</translation> <translation id="2797302972324086597">Ölkə kodu</translation> +<translation id="2802403747691280910"><ph name="NUMBER_OF_TABS_REMOVED" /> bağlanıb</translation> <translation id="2816489851009559785">Menyu → Ayarlar → Defolt brauzer</translation> <translation id="2818821771744632548">iPhone-u sıfırlayarkən <ph name="USER_NAME" /> hesabından çıxdınız. Yenidən daxil olmaq üçün aşağıda "Davam edin" üzərinə toxunun.</translation> <translation id="2819667972867209401">Yanılı olduqda data Google Hesabında yadda saxlanılır. Sönülü olduqda data yalnız bu cihazda yadda saxlanılır və çıxdığınız zaman silinir.</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">Cəhd edin</translation> <translation id="797588153137233716">Menyu → Tarixçə → Baxış datasını silin</translation> <translation id="7977451675950311423">Verilənlərin pozulması nəticəsində ifşa olunan parol istifadə etdikdə xəbərdarlıq edir.</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> yeni tab, <ph name="NUMBER_OF_TABS_REMOVED" /> tab bağlıdır</translation> <translation id="797824194429476746">Tablar bu cihazda açıq qalacaq, lakin qrup həmişəlik silinəcək.</translation> <translation id="7982789257301363584">Şəbəkə</translation> <translation id="7987685713885608670">Təhlükəsizliyi artırmaq üçün Google Parol Menecerində saxlanmazdan əvvəl cihazınızda parolları şifrələyin.</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">Hamısını bağlayın</translation> <translation id="8730621377337864115">Tamamdır</translation> <translation id="87371078663613140">Menyu panelində seçimləri araşdırın</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> yeni tab</translation> <translation id="8741627442233023406">{count,plural, =1{Tabı nəzərdən keçirin…}other{Bütün tabları nəzərdən keçirin…}}</translation> <translation id="8741995161408053644"><ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> bölməsində Google Hesabının axtarış tarixçəsinin digər formaları ola bilər.</translation> <translation id="874599634440689554">Link yaradın</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_be.xtb b/ios/chrome/app/strings/resources/ios_strings_be.xtb index 0b5b1d9..88794209 100644 --- a/ios/chrome/app/strings/resources/ios_strings_be.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_be.xtb
@@ -386,6 +386,7 @@ <translation id="2640733327287333451">Няма імені карыстальніка ••••••</translation> <translation id="264215785133931186">Праверка праводзілася толькі што</translation> <translation id="2647434099613338025">Дадаць мову</translation> +<translation id="2649592894792404568">Вы збіраецеся выдаліць даныя Менеджара пароляў Google</translation> <translation id="2652129567809778422">Выберыце пароль</translation> <translation id="2658056020748144467">Немагчыма адкрыць файл</translation> <translation id="2661809266906115479"><ph name="TITLE" />, <ph name="STATE" />, толькі на гэтай прыладзе, <ph name="URL" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bn.xtb b/ios/chrome/app/strings/resources/ios_strings_bn.xtb index a58c1da4..c2995e4 100644 --- a/ios/chrome/app/strings/resources/ios_strings_bn.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_bn.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{আপনার Google অ্যাকাউন্ট, {EMAIL}-এ পাসওয়ার্ড সেভ করা হয়েছে}one{আপনার Google অ্যাকাউন্ট, {EMAIL}-এ পাসওয়ার্ড সেভ করা হয়েছে}other{আপনার Google অ্যাকাউন্ট, {EMAIL}-এ পাসওয়ার্ড সেভ করা হয়েছে}}</translation> <translation id="2791174088547598693">পাসওয়ার্ড যোগ করুন…</translation> <translation id="2797302972324086597">দেশের কোড</translation> +<translation id="2802403747691280910"><ph name="NUMBER_OF_TABS_REMOVED" />টি বন্ধ আছে</translation> <translation id="2816489851009559785">মেনু → সেটিংস → ডিফল্ট ব্রাউজার</translation> <translation id="2818821771744632548">আপনার iPhone রিসেটের অংশ হিসেবে আপনার অ্যাকাউন্ট <ph name="USER_NAME" /> থেকে সাইন-আউট হয়ে গেছেন। আবার সাইন ইন করতে, নিচে "চালিয়ে যান" বিকল্পে ট্যাপ করুন।</translation> <translation id="2819667972867209401">চালু করা থাকলে, আপনার Google অ্যাকাউন্টে ডেটা সেভ করা হয়। বন্ধ করা থাকলে, ডেটা শুধু এই ডিভাইসে সেভ করা হয় এবং আপনি সাইন-আউট করলে তা মুছে ফেলা হয়।</translation> @@ -1150,6 +1151,7 @@ <translation id="6160780110287872296">ফাইল ডাউনলোড করবেন?</translation> <translation id="6165508094623778733">আরও জানুন</translation> <translation id="6168647875670665004">নিবন্ধ সম্পর্কিত পরামর্শ</translation> +<translation id="6169031022444660352">সেভ করা সব ক্রেডেনশিয়াল মুছে ফেলতে, আপনাকে প্রথমে নিজের ডিভাইসে পাসকোড সেট-আপ করতে হবে।</translation> <translation id="6173499589275053515">পাসওয়ার্ড আপনার Google অ্যাকাউন্ট, <ph name="EMAIL" />-এ সেভ করা আছে</translation> <translation id="6187302354554850004">শেষে সিঙ্ক হয়েছে: <ph name="LAST_USED_TIME" /></translation> <translation id="6188737759358894319"><ph name="DATE" /> তারিখে তৈরি করা হয়েছে</translation> @@ -1201,6 +1203,7 @@ <translation id="6355820205320395730">দুর্বল পাসওয়ার্ড সহজেই অনুমান করা যায়। শক্তিশালী পাসওয়ার্ড তৈরি করছেন কিনা তা ভাল করে দেখে নিন। <ph name="BEGIN_LINK" />নিরাপত্তা সংক্রান্ত আরও পরামর্শ দেখুন।<ph name="END_LINK" /></translation> <translation id="6361848730467328243"><ph name="DOMAIN_NAME" /> ফলো করুন</translation> <translation id="6368038301482806847">তালিকা থেকে একটি সার্চ ইঞ্জিন বেছে নিন।</translation> +<translation id="6368102751067608420">পাসওয়ার্ড ম্যানেজার সংক্রান্ত সব ডেটা মুছতে</translation> <translation id="6374469231428023295">আবার চেষ্টা করুন</translation> <translation id="6387994324662817823">শুধুমাত্র এই ডিভাইসের 'Google পাসওয়ার্ড ম্যানেজারে' পাসওয়ার্ড সেভ করা হয়।</translation> <translation id="6404422529625928907">Google Drive-এ খুলুন</translation> @@ -1575,6 +1578,7 @@ <translation id="7975036700432177008">চেষ্টা করুন</translation> <translation id="797588153137233716">মেনু → ইতিহাস → ব্রাউজ করা ডেটা মুছুন</translation> <translation id="7977451675950311423">আপনি যদি এমন কোনও পাসওয়ার্ড ব্যবহার করেন যা ডেটার নিরাপত্তা লঙ্ঘনের কারণে সুরক্ষিত নয়, সেক্ষেত্রে এটি আপনাকে সতর্ক করে।</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" />টি নতুন ট্যাব,<ph name="NUMBER_OF_TABS_REMOVED" />টি বন্ধ আছে</translation> <translation id="797824194429476746">এই ডিভাইসে ট্যাব খোলা থাকবে কিন্তু গ্রুপ স্থায়ীভাবে মুছে ফেলা হবে।</translation> <translation id="7982789257301363584">নেটওয়ার্ক</translation> <translation id="7987685713885608670">অতিরিক্ত নিরাপত্তার জন্য, Google পাসওয়ার্ড ম্যানেজারে সেভ করার আগে আপনার ডিভাইসে পাসওয়ার্ড এনক্রিপ্ট করুন।</translation> @@ -1758,6 +1762,7 @@ <translation id="8728922029615312208">সব বন্ধ করুন</translation> <translation id="8730621377337864115">হয়ে গেছে</translation> <translation id="87371078663613140">মেনু বারে বিকল্প দেখুন</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" />টি নতুন ট্যাব</translation> <translation id="8741627442233023406">{count,plural, =1{ট্যাব পর্যালোচনা করুন…}one{সব ট্যাব পর্যালোচনা করুন…}other{সব ট্যাব পর্যালোচনা করুন…}}</translation> <translation id="8741995161408053644"><ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />-এ আপনার Google অ্যাকাউন্টের অন্যান্য ধরনের ব্রাউজিং ইতিহাস থাকতে পারে।</translation> <translation id="874599634440689554">লিঙ্ক তৈরি করুন</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_bs.xtb b/ios/chrome/app/strings/resources/ios_strings_bs.xtb index da928f29..c8c409d2 100644 --- a/ios/chrome/app/strings/resources/ios_strings_bs.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_bs.xtb
@@ -386,7 +386,7 @@ <translation id="2640733327287333451">Nema korisničkog imena ••••••</translation> <translation id="264215785133931186">Upravo je provjereno</translation> <translation id="2647434099613338025">Dodavanje jezika</translation> -<translation id="2649592894792404568">Spremate se izbrisati podatke Google upravitelja zaporki</translation> +<translation id="2649592894792404568">Izbrisat ćete podatke iz Google upravitelja lozinki</translation> <translation id="2652129567809778422">Odaberite lozinku</translation> <translation id="2658056020748144467">Nije moguće otvoriti fajl</translation> <translation id="2661809266906115479"><ph name="TITLE" />, <ph name="STATE" />, samo na ovom uređaju, <ph name="URL" /></translation> @@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{Lozinka je sačuvana na Google računu {EMAIL}}one{Lozinka je sačuvana na Google računu {EMAIL}}few{Lozinke su sačuvane na Google računu {EMAIL}}other{Lozinke su sačuvane na Google računu {EMAIL}}}</translation> <translation id="2791174088547598693">Dodavanje lozinke…</translation> <translation id="2797302972324086597">Pozivni broj zemlje</translation> +<translation id="2802403747691280910">Zatvoreno: <ph name="NUMBER_OF_TABS_REMOVED" /></translation> <translation id="2816489851009559785">Meni → Postavke → Zadani preglednik</translation> <translation id="2818821771744632548">Bili ste odjavljeni s računa <ph name="USER_NAME" /> tokom vraćanja iPhonea na zadano. Da se prijavite ponovo, dodirnite "Nastavi" u nastavku.</translation> <translation id="2819667972867209401">Kada je uključeno, podaci se pohranjuju na Google računu. Kada je isključeno, podaci se pohranjuju samo na ovom uređaju i brišu ako se odjavite.</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">Isprobajte</translation> <translation id="797588153137233716">Meni → Historija → Izbriši podatke pregledanja</translation> <translation id="7977451675950311423">Upozorava vas ako koristite lozinku ugroženu narušavanjem podataka.</translation> +<translation id="7977482887663636093">Nove kartice: <ph name="NUMBER_OF_TABS_ADDED" />; zatvoreno: <ph name="NUMBER_OF_TABS_REMOVED" /></translation> <translation id="797824194429476746">Kartice će ostati otvorene na uređaju, ali će se grupa trajno izbrisati.</translation> <translation id="7982789257301363584">Mreža</translation> <translation id="7987685713885608670">Da imate dodatnu sigurnost, šifrirajte lozinke na uređaju prije nego što se pohrane u Googleov Upravitelj lozinki.</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">Zatvori sve</translation> <translation id="8730621377337864115">Gotovo</translation> <translation id="87371078663613140">Istražite opcije u traci menija</translation> +<translation id="8739706427581741437">Nove kartice: <ph name="NUMBER_OF_TABS_ADDED" /></translation> <translation id="8741627442233023406">{count,plural, =1{Pregled kartice…}one{Pregled svih kartica…}few{Pregled svih kartica…}other{Pregled svih kartica…}}</translation> <translation id="8741995161408053644">Vaš Google račun može imati druge oblike historije pregledanja na <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation> <translation id="874599634440689554">Kreiraj link</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ca.xtb b/ios/chrome/app/strings/resources/ios_strings_ca.xtb index 2fe6336..2dc51f5 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ca.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ca.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{Contrasenya desada al teu Compte de Google ({EMAIL})}other{Contrasenyes desades al teu Compte de Google ({EMAIL})}}</translation> <translation id="2791174088547598693">Afegeix una contrasenya…</translation> <translation id="2797302972324086597">Codi de país</translation> +<translation id="2802403747691280910"><ph name="NUMBER_OF_TABS_REMOVED" /> de tancades</translation> <translation id="2816489851009559785">Menú → Configuració → Navegador predeterminat</translation> <translation id="2818821771744632548">S'ha tancat la sessió del teu compte, <ph name="USER_NAME" />, com a part del restabliment de l'iPhone. Per tornar a iniciar la sessió, toca Continua més avall.</translation> <translation id="2819667972867209401">Si aquesta opció està activada, les dades es desen al teu Compte de Google. Si està desactivada, les dades només es desen en aquest dispositiu i se suprimeixen si tanques la sessió.</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">Prova</translation> <translation id="797588153137233716">Menú → Historial → Suprimeix les dades de navegació</translation> <translation id="7977451675950311423">T'avisa si utilitzes una contrasenya que està en perill a causa d'una violació de les dades.</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> pestanyes noves, <ph name="NUMBER_OF_TABS_REMOVED" /> de tancades</translation> <translation id="797824194429476746">Les pestanyes continuaran obertes en aquest dispositiu, però el grup se suprimirà permanentment.</translation> <translation id="7982789257301363584">Xarxa</translation> <translation id="7987685713885608670">Per a una seguretat addicional, encripta les contrasenyes al dispositiu abans de desar-les al gestor de contrasenyes de Google.</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">Tanca-ho tot</translation> <translation id="8730621377337864115">Fet</translation> <translation id="87371078663613140">Explora les opcions a la barra de menú</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> pestanyes noves</translation> <translation id="8741627442233023406">{count,plural, =1{Revisa la pestanya…}other{Revisa totes les pestanyes…}}</translation> <translation id="8741995161408053644">És possible que el vostre compte de Google tingui altres formes de l'historial de navegació a <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation> <translation id="874599634440689554">Crea un enllaç</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_cy.xtb b/ios/chrome/app/strings/resources/ios_strings_cy.xtb index 0f4c543..5c4bd54582 100644 --- a/ios/chrome/app/strings/resources/ios_strings_cy.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_cy.xtb
@@ -386,6 +386,7 @@ <translation id="2640733327287333451">Dim Enw Defnyddiwr ••••••</translation> <translation id="264215785133931186">Newydd ei wirio</translation> <translation id="2647434099613338025">Ychwanegu iaith</translation> +<translation id="2649592894792404568">Rydych ar fin dileu eich data Rheolwr Cyfrineiriau Google</translation> <translation id="2652129567809778422">Dewiswch gyfrinair</translation> <translation id="2658056020748144467">Methu ag agor y ffeil</translation> <translation id="2661809266906115479"><ph name="TITLE" />, <ph name="STATE" />, ar y ddyfais hon yn unig, <ph name="URL" /></translation> @@ -423,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{Cyfrinair wedi'i gadw yn eich Cyfrif Google, {EMAIL}}zero{Cyfrineiriau wedi'u cadw yn eich Cyfrif Google, {EMAIL}}two{Cyfrineiriau wedi'u cadw yn eich Cyfrif Google, {EMAIL}}few{Cyfrineiriau wedi'u cadw yn eich Cyfrif Google, {EMAIL}}many{Cyfrineiriau wedi'u cadw yn eich Cyfrif Google, {EMAIL}}other{Cyfrineiriau wedi'u cadw yn eich Cyfrif Google, {EMAIL}}}</translation> <translation id="2791174088547598693">Ychwanegu cyfrinair…</translation> <translation id="2797302972324086597">Cod gwlad</translation> +<translation id="2802403747691280910">Cafodd <ph name="NUMBER_OF_TABS_REMOVED" /> eu cau</translation> <translation id="2816489851009559785">Dewislen → Gosodiadau → Porwr Diofyn</translation> <translation id="2818821771744632548">Cawsoch eich allgofnodi o'ch cyfrif, <ph name="USER_NAME" />, fel rhan o'ch ailosodiad iPhone. I fewngofnodi eto, tapiwch "Parhau" isod.</translation> <translation id="2819667972867209401">Pan fydd ymlaen, mae data'n cael eu cadw yn eich Cyfrif Google. Pan fydd wedi'i ddiffodd, dim ond i'r ddyfais hon y caiff data eu cadw a chânt eu dileu os byddwch yn allgofnodi.</translation> @@ -1573,6 +1575,7 @@ <translation id="7975036700432177008">Rhoi cynnig arni</translation> <translation id="797588153137233716">Dewislen → Hanes → Dileu Data Pori</translation> <translation id="7977451675950311423">Yn eich rhybuddio os ydych yn defnyddio cyfrinair sydd wedi'i beryglu mewn achos o dor data.</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> o dabiau newydd, <ph name="NUMBER_OF_TABS_REMOVED" /> wedi cau</translation> <translation id="797824194429476746">Bydd y tabiau yn aros ar agor ar y ddyfais hon ond bydd y grŵp yn cael ei ddileu yn barhaol.</translation> <translation id="7982789257301363584">Rhwydwaith</translation> <translation id="7987685713885608670">Am ddiogelwch ychwanegol, amgryptiwch gyfrineiriau ar eich dyfais cyn iddynt gael eu cadw i Reolwr Cyfrineiriau Google.</translation> @@ -1756,6 +1759,7 @@ <translation id="8728922029615312208">Cau'r cyfan</translation> <translation id="8730621377337864115">Wedi gorffen</translation> <translation id="87371078663613140">Archwiliwch yr opsiynau yn y bar dewislen</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> o dabiau newydd</translation> <translation id="8741627442233023406">{count,plural, =1{Adolygu'r tab…}zero{Adolygu'r holl dabiau…}two{Adolygu'r holl dabiau…}few{Adolygu'r holl dabiau…}many{Adolygu'r holl dabiau…}other{Adolygu'r holl dabiau…}}</translation> <translation id="8741995161408053644">Mae'n bosib y bydd gan eich Cyfrif Google fathau eraill o hanes pori yn <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation> <translation id="874599634440689554">Creu dolen</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_da.xtb b/ios/chrome/app/strings/resources/ios_strings_da.xtb index 6e53021..9ffecd3b 100644 --- a/ios/chrome/app/strings/resources/ios_strings_da.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_da.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{Adgangskoden er gemt på din Google-konto, {EMAIL}}one{Adgangskoden er gemt på din Google-konto, {EMAIL}}other{Adgangskoderne er gemt på din Google-konto, {EMAIL}}}</translation> <translation id="2791174088547598693">Tilføj adgangskode…</translation> <translation id="2797302972324086597">Landekode</translation> +<translation id="2802403747691280910"><ph name="NUMBER_OF_TABS_REMOVED" /> er lukket</translation> <translation id="2816489851009559785">Menu → Indstillinger → Standardbrowser</translation> <translation id="2818821771744632548">Du blev logget ud af din konto, <ph name="USER_NAME" />, som en del af nulstillingen af din iPhone. Tryk på "Fortsæt" nedenfor for at logge ind igen.</translation> <translation id="2819667972867209401">Når denne indstilling er aktiveret, gemmes data på din Google-konto. Når indstillingen er deaktiveret, gemmes data kun på denne enhed, og dataene slettes, hvis du logger ud.</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">Prøv</translation> <translation id="797588153137233716">Menu → Historik → Slet browserdata</translation> <translation id="7977451675950311423">Advarer dig, hvis du bruger en adgangskode, der er blevet kompromitteret som følge af et brud på datasikkerheden.</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> nye faner, <ph name="NUMBER_OF_TABS_REMOVED" /> er lukket</translation> <translation id="797824194429476746">Fanerne forbliver åbne på denne enhed, men gruppen slettes permanent.</translation> <translation id="7982789257301363584">Netværk</translation> <translation id="7987685713885608670">For at beskytte adgangskoderne yderligere krypteres de på din enhed, inden de gemmes i Googles Adgangskodeadministrator.</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">Luk alle</translation> <translation id="8730621377337864115">Udført</translation> <translation id="87371078663613140">Se valgmulighederne i menulinjen</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> nye faner</translation> <translation id="8741627442233023406">{count,plural, =1{Gennemgå fanen…}one{Gennemgå alle faner…}other{Gennemgå alle faner…}}</translation> <translation id="8741995161408053644">Din Google-konto kan have andre former for browserhistorik på <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation> <translation id="874599634440689554">Opret link</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_de.xtb b/ios/chrome/app/strings/resources/ios_strings_de.xtb index 9bd2e3c..80358a4 100644 --- a/ios/chrome/app/strings/resources/ios_strings_de.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_de.xtb
@@ -386,6 +386,7 @@ <translation id="2640733327287333451">Kein Nutzername ••••••</translation> <translation id="264215785133931186">Zuletzt geprüft: gerade eben</translation> <translation id="2647434099613338025">Sprache hinzufügen</translation> +<translation id="2649592894792404568">Du bist dabei, deine Daten im Google Passwortmanager zu löschen</translation> <translation id="2652129567809778422">Passwort auswählen</translation> <translation id="2658056020748144467">Fehler beim Öffnen der Datei</translation> <translation id="2661809266906115479"><ph name="TITLE" />, <ph name="STATE" />, nur auf diesem Gerät, <ph name="URL" /></translation> @@ -423,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{Passwort in deinem Google-Konto ({EMAIL}) gespeichert}other{Passwörter in deinem Google-Konto ({EMAIL}) gespeichert}}</translation> <translation id="2791174088547598693">Passwort hinzufügen…</translation> <translation id="2797302972324086597">Ländercode</translation> +<translation id="2802403747691280910"><ph name="NUMBER_OF_TABS_REMOVED" /> geschlossen</translation> <translation id="2816489851009559785">„Menü“ → Einstellungen → „Standardbrowser“</translation> <translation id="2818821771744632548">Du wurdest beim Zurücksetzen deines iPhones von deinem Konto <ph name="USER_NAME" /> abgemeldet. Tippe unten auf „Weiter“, um dich wieder anzumelden.</translation> <translation id="2819667972867209401">Wenn diese Option aktiviert ist, werden Daten in deinem Google-Konto gespeichert. Ist sie deaktiviert, werden die Daten nur auf diesem Gerät gespeichert und gelöscht, wenn du dich abmeldest.</translation> @@ -1573,6 +1575,7 @@ <translation id="7975036700432177008">Testen</translation> <translation id="797588153137233716">„Menü“ → „Verlauf“ → „Browserdaten löschen“</translation> <translation id="7977451675950311423">Warnt dich, wenn du ein Passwort verwendest, das bei einer Datenpanne gehackt wurde.</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> neue(r) Tab(s), <ph name="NUMBER_OF_TABS_REMOVED" /> geschlossen</translation> <translation id="797824194429476746">Die Tabs bleiben auf diesem Gerät geöffnet, aber die Gruppe wird endgültig gelöscht.</translation> <translation id="7982789257301363584">Netzwerk</translation> <translation id="7987685713885608670">Für zusätzliche Sicherheit kannst du Passwörter auf deinem Gerät verschlüsseln lassen, bevor sie im Google Passwortmanager gespeichert werden.</translation> @@ -1756,6 +1759,7 @@ <translation id="8728922029615312208">Alle schließen</translation> <translation id="8730621377337864115">Fertig</translation> <translation id="87371078663613140">Optionen in der Menüleiste ansehen</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> neue(r) Tab(s)</translation> <translation id="8741627442233023406">{count,plural, =1{Tab ansehen…}other{Alle Tabs ansehen…}}</translation> <translation id="8741995161408053644">Möglicherweise sind in deinem Google-Konto noch andere Formen des Browserverlaufs unter <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> vorhanden.</translation> <translation id="874599634440689554">Link erstellen</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_el.xtb b/ios/chrome/app/strings/resources/ios_strings_el.xtb index c0dd4a9..b3765ad 100644 --- a/ios/chrome/app/strings/resources/ios_strings_el.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_el.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{Ο κωδικός πρόσβασης αποθηκεύτηκε στον Λογαριασμό σας Google, {EMAIL}}other{Οι κωδικοί πρόσβασης αποθηκεύτηκαν στον Λογαριασμό σας Google, {EMAIL}}}</translation> <translation id="2791174088547598693">Προσθήκη κωδικού πρόσβασης…</translation> <translation id="2797302972324086597">Κωδικός χώρας</translation> +<translation id="2802403747691280910">Έκλεισαν <ph name="NUMBER_OF_TABS_REMOVED" /></translation> <translation id="2816489851009559785">Μενού → Ρυθμίσεις → Προεπιλεγμένο πρόγραμμα περιήγησης</translation> <translation id="2818821771744632548">Αποσυνδεθήκατε από τον λογαριασμό σας <ph name="USER_NAME" /> στο πλαίσιο της επαναφοράς του iPhone. Για να συνδεθείτε ξανά, πατήστε Συνέχεια παρακάτω.</translation> <translation id="2819667972867209401">Όταν είναι ενεργοποιημένη αυτή η ρύθμιση, τα δεδομένα αποθηκεύονται στον Λογαριασμό σας Google. Όταν είναι απενεργοποιημένη, τα δεδομένα αποθηκεύονται μόνο σε αυτή τη συσκευή και διαγράφονται εάν αποσυνδεθείτε.</translation> @@ -1575,6 +1576,7 @@ <translation id="7975036700432177008">Δοκιμή</translation> <translation id="797588153137233716">Μενού → Ιστορικό → Διαγραφή δεδομένων περιήγησης</translation> <translation id="7977451675950311423">Σας προειδοποιεί εάν χρησιμοποιήσετε έναν κωδικό πρόσβασης που έχει παραβιαστεί μέσω παραβίασης δεδομένων.</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> νέες καρτέλες, έκλεισαν <ph name="NUMBER_OF_TABS_REMOVED" /></translation> <translation id="797824194429476746">Οι καρτέλες θα παραμείνουν ανοιχτές σε αυτή τη συσκευή, αλλά η ομάδα θα διαγραφεί οριστικά.</translation> <translation id="7982789257301363584">Δίκτυο</translation> <translation id="7987685713885608670">Για επιπλέον ασφάλεια, κρυπτογραφήστε τους κωδικούς πρόσβασης στη συσκευή σας προτού αποθηκευτούν στον Διαχειριστή κωδικών πρόσβασης Google.</translation> @@ -1758,6 +1760,7 @@ <translation id="8728922029615312208">Κλείσιμο όλων</translation> <translation id="8730621377337864115">Ολοκληρώθηκε</translation> <translation id="87371078663613140">Εξερευνήστε τις επιλογές στη γραμμή μενού</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> νέες καρτέλες</translation> <translation id="8741627442233023406">{count,plural, =1{Έλεγχος καρτέλας…}other{Έλεγχος όλων των καρτελών…}}</translation> <translation id="8741995161408053644">Ο Λογαριασμός σας Google ενδέχεται να διαθέτει άλλες μορφές ιστορικού περιήγησης στη διεύθυνση <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation> <translation id="874599634440689554">Δημιουργία συνδέσμου</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es-419.xtb b/ios/chrome/app/strings/resources/ios_strings_es-419.xtb index be2d7bb..2f32c2b0 100644 --- a/ios/chrome/app/strings/resources/ios_strings_es-419.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_es-419.xtb
@@ -386,6 +386,7 @@ <translation id="2640733327287333451">Sin nombre de usuario ••••••</translation> <translation id="264215785133931186">Se verificó recién</translation> <translation id="2647434099613338025">Agregar idioma</translation> +<translation id="2649592894792404568">Estás a punto de borrar tus datos del Administrador de contraseñas de Google</translation> <translation id="2652129567809778422">Seleccionar contraseña</translation> <translation id="2658056020748144467">No se puede abrir</translation> <translation id="2661809266906115479"><ph name="TITLE" />, <ph name="STATE" />, solo en este dispositivo, <ph name="URL" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_es.xtb b/ios/chrome/app/strings/resources/ios_strings_es.xtb index a25e702d..17a88fe 100644 --- a/ios/chrome/app/strings/resources/ios_strings_es.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_es.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{Contraseña guardada en tu cuenta de Google ({EMAIL})}other{Contraseñas guardadas en tu cuenta de Google ({EMAIL})}}</translation> <translation id="2791174088547598693">Añadir contraseña…</translation> <translation id="2797302972324086597">Código de país</translation> +<translation id="2802403747691280910">Cerradas: <ph name="NUMBER_OF_TABS_REMOVED" /></translation> <translation id="2816489851009559785">Menú → Configuración → Navegador predeterminado</translation> <translation id="2818821771744632548">Se ha cerrado la sesión de tu cuenta (<ph name="USER_NAME" />) al restablecer tu iPhone. Para volver a iniciar sesión, toca Continuar abajo.</translation> <translation id="2819667972867209401">Si esta opción está activada, los datos se guardan en tu cuenta de Google. Si está desactivada, los datos solo se guardan en este dispositivo y se eliminan al cerrar sesión.</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">Probar</translation> <translation id="797588153137233716">Menú → Historial → Eliminar datos de navegación</translation> <translation id="7977451675950311423">Te avisa si usas una contraseña vulnerada en una brecha de seguridad de datos.</translation> +<translation id="7977482887663636093">Pestañas nuevas: <ph name="NUMBER_OF_TABS_ADDED" />; cerradas: <ph name="NUMBER_OF_TABS_REMOVED" /></translation> <translation id="797824194429476746">Las pestañas seguirán abiertas en este dispositivo, pero el grupo se eliminará de forma permanente</translation> <translation id="7982789257301363584">Red</translation> <translation id="7987685713885608670">Para una mayor seguridad, cifra las contraseñas en tu dispositivo antes de que se guarden en el Gestor de contraseñas de Google.</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">Cerrar todo</translation> <translation id="8730621377337864115">Hecho</translation> <translation id="87371078663613140">Explora las opciones en la barra de menú</translation> +<translation id="8739706427581741437">Pestañas nuevas: <ph name="NUMBER_OF_TABS_ADDED" /></translation> <translation id="8741627442233023406">{count,plural, =1{Revisar la pestaña…}other{Revisar todas las pestañas…}}</translation> <translation id="8741995161408053644">Es posible que tu cuenta de Google tenga otras formas del historial de navegación en la página <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation> <translation id="874599634440689554">Crear enlace</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fa.xtb b/ios/chrome/app/strings/resources/ios_strings_fa.xtb index 0c46a4a..f619fb8 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fa.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fa.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{گذرواژه در «حساب Google» شما ({EMAIL}) ذخیره شد}one{گذرواژه در «حساب Google» شما ({EMAIL}) ذخیره شد}other{گذرواژهها در «حساب Google» شما ({EMAIL}) ذخیره شد}}</translation> <translation id="2791174088547598693">افزودن گذرواژه…</translation> <translation id="2797302972324086597">کد کشور</translation> +<translation id="2802403747691280910"><ph name="NUMBER_OF_TABS_REMOVED" /> برگه بسته شد</translation> <translation id="2816489851009559785">منو ← تنظیمات ← مرورگر پیشفرض</translation> <translation id="2818821771744632548">بهعنوان بخشی از بازنشانی iPhone، از سیستم حساب <ph name="USER_NAME" /> خارج شدید. برای ورود مجدد به سیستم، روی «ادامه» در زیر تکضرب بزنید.</translation> <translation id="2819667972867209401">وقتی روشن باشد، دادهها در «حساب Google» شما ذخیره میشود. وقتی خاموش باشد، دادهها فقط در این دستگاه ذخیره میشود و درصورت خروج از سیستم، دادهها حذف میشود.</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">امتحان کنید</translation> <translation id="797588153137233716">منو ← سابقه ← حذف دادههای مرور</translation> <translation id="7977451675950311423">اگر از گذرواژهای استفاده کنید که در سرقت اطلاعات شبکه لو رفته باشد، به شما هشدار میدهد.</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> برگه جدید، <ph name="NUMBER_OF_TABS_REMOVED" /> برگه بسته شد</translation> <translation id="797824194429476746">برگهها در این دستگاه باز میمانند اما گروه برای همیشه حذف خواهد شد.</translation> <translation id="7982789257301363584">شبکه</translation> <translation id="7987685713885608670">برای افزایش ایمنی، گذرواژهها را قبلاز ذخیره شدن در «مدیر گذرواژه Google» در دستگاهتان رمزگذاری میکند.</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">بستن همه</translation> <translation id="8730621377337864115">تمام</translation> <translation id="87371078663613140">گزینهها را در نوار منو کاوش کنید</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> برگه جدید</translation> <translation id="8741627442233023406">{count,plural, =1{مرور کردن برگه…}one{مرور کردن برگه…}other{مرور کردن همه برگهها…}}</translation> <translation id="8741995161408053644">ممکن است حساب Google شما اشکال سابقه مرور دیگری در <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> داشته باشد.</translation> <translation id="874599634440689554">ایجاد کردن پیوند</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fi.xtb b/ios/chrome/app/strings/resources/ios_strings_fi.xtb index 7f784a9..a12ada8c 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fi.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fi.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{Salasana tallennettu Google-tilille: {EMAIL}}other{Salasanat tallennettu Google-tilille: {EMAIL}}}</translation> <translation id="2791174088547598693">Lisää salasana…</translation> <translation id="2797302972324086597">Maatunnus</translation> +<translation id="2802403747691280910"><ph name="NUMBER_OF_TABS_REMOVED" /> suljettu</translation> <translation id="2816489851009559785">Valikko → Asetukset → Oletusselain</translation> <translation id="2818821771744632548">Sinut kirjattiin ulos tililtä <ph name="USER_NAME" />, kun iPhone nollattiin. Kirjaudu takaisin sisään valitsemalla Jatka.</translation> <translation id="2819667972867209401">Kun tämä on päällä, data tallennetaan Google-tilillesi. Kun asetus on pois päältä, data tallennetaan vain tälle laitteelle ja poistetaan, jos kirjaudut ulos.</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">Kokeile</translation> <translation id="797588153137233716">Valikko → Historia → Poista selausdata</translation> <translation id="7977451675950311423">Varoittaa, jos käytät salasanaa, joka on vaarantunut tietosuojaloukkauksen yhteydessä.</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> uutta välilehteä, <ph name="NUMBER_OF_TABS_REMOVED" /> suljettu</translation> <translation id="797824194429476746">Välilehdet pysyvät auki tällä laitteella, mutta ryhmä poistetaan pysyvästi.</translation> <translation id="7982789257301363584">Verkko</translation> <translation id="7987685713885608670">Salasanat kannattaa salata turvallisuussyistä laitteella ennen niiden tallentamista Googlen Salasanojen ylläpitoon.</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">Sulje kaikki</translation> <translation id="8730621377337864115">Valmis</translation> <translation id="87371078663613140">Tutustu valikkopalkkiin</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> uutta välilehteä</translation> <translation id="8741627442233023406">{count,plural, =1{Tarkista välilehti…}other{Tarkista kaikki välilehdet…}}</translation> <translation id="8741995161408053644">Google-tililläsi voi olla muita selaushistoriatietoja osoitteessa <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation> <translation id="874599634440689554">Luo linkki</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fil.xtb b/ios/chrome/app/strings/resources/ios_strings_fil.xtb index 68e1553..8560aca 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fil.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fil.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{Na-save ang password sa iyong Google Account na {EMAIL}}one{Na-save ang mga password sa iyong Google Account na {EMAIL}}other{Na-save ang mga password sa iyong Google Account na {EMAIL}}}</translation> <translation id="2791174088547598693">Magdagdag ng password…</translation> <translation id="2797302972324086597">Country code</translation> +<translation id="2802403747691280910">Isinara ang <ph name="NUMBER_OF_TABS_REMOVED" /></translation> <translation id="2816489851009559785">Menu → Mga Setting → Default browser</translation> <translation id="2818821771744632548">Na-sign out ka sa iyong account na <ph name="USER_NAME" />, bilang bahagi ng pag-reset ng iPhone mo. Para mag-sign in ulit, i-tap ang "Magpatuloy" sa ibaba.</translation> <translation id="2819667972867209401">Kapag naka-on, mase-save ang data sa iyong Google Account. Kapag naka-off, mase-save lang ang data sa device na ito at made-delete ito kung magsa-sign out ka.</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">Subukan</translation> <translation id="797588153137233716">Menu → History → I-delete ang data mula sa pag-browse</translation> <translation id="7977451675950311423">Babalaan ka kung gagamit ka ng password na nakompromiso sa isang paglabag sa data.</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> (na) bagong tab, isinara ang <ph name="NUMBER_OF_TABS_REMOVED" /></translation> <translation id="797824194429476746">Mananatiling nakabukas ang mga tab sa device na ito pero permanenteng made-delete ang grupo.</translation> <translation id="7982789257301363584">Network</translation> <translation id="7987685713885608670">Para sa dagdag na kaligtasan, i-encrypt ang mga password sa iyong device bago i-save ang mga ito sa Google Password Manager.</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">Isara lahat</translation> <translation id="8730621377337864115">Tapos na</translation> <translation id="87371078663613140">I-explore ang mga opsyon sa menu bar</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> (na) bagong tab</translation> <translation id="8741627442233023406">{count,plural, =1{Suriin ang tab…}one{Suriin ang lahat ng tab…}other{Suriin ang lahat ng tab…}}</translation> <translation id="8741995161408053644">Maaaring may iba pang mga uri ng history ng pag-browse ang iyong Google Account sa <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation> <translation id="874599634440689554">Gumawa ng link</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb b/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb index 9bd95280..d6a9d08 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fr-CA.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{Mot de passe enregistré dans votre compte Google, {EMAIL}}one{Mot de passe enregistré dans votre compte Google, {EMAIL}}other{Mots de passe enregistrés dans votre compte Google, {EMAIL}}}</translation> <translation id="2791174088547598693">Ajouter un mot de passe…</translation> <translation id="2797302972324086597">Code de pays</translation> +<translation id="2802403747691280910"><ph name="NUMBER_OF_TABS_REMOVED" /> fermé</translation> <translation id="2816489851009559785">Menu → Paramètres → Navigateur par défaut</translation> <translation id="2818821771744632548">Vous avez été déconnecté de votre compte <ph name="USER_NAME" /> lors de la réinitialisation de votre iPhone. Pour vous reconnecter, touchez « Continuer » ci-dessous.</translation> <translation id="2819667972867209401">Activé : les données sont enregistrées dans votre compte Google. Désactivé : les données sont uniquement enregistrées sur cet appareil et sont supprimées lorsque vous vous déconnectez.</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">Essayer</translation> <translation id="797588153137233716">Menu → Historique → Supprimer les données de navigation</translation> <translation id="7977451675950311423">Vous avertit si vous utilisez un mot de passe qui a été compromis à la suite d'une violation de données.</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> nouveaux onglets, <ph name="NUMBER_OF_TABS_REMOVED" /> fermé</translation> <translation id="797824194429476746">Les onglets resteront ouverts sur cet appareil, mais le groupe sera définitivement supprimé.</translation> <translation id="7982789257301363584">Réseau</translation> <translation id="7987685713885608670">Pour renforcer la sécurité, chiffrez les mots de passe sur votre appareil avant qu'ils soient enregistrés dans le gestionnaire de mots de passe Google.</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">Tout fermer</translation> <translation id="8730621377337864115">Terminé</translation> <translation id="87371078663613140">Explorer les options dans la barre de menu</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> nouveaux onglets</translation> <translation id="8741627442233023406">{count,plural, =1{Vérifier l'onglet…}one{Vérifier tous les onglets...}other{Vérifier tous les onglets…}}</translation> <translation id="8741995161408053644">D'autres formes d'historique de navigation peuvent exister sur votre compte Google : <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation> <translation id="874599634440689554">Créer un lien</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_fr.xtb b/ios/chrome/app/strings/resources/ios_strings_fr.xtb index bea779f8..865b56d 100644 --- a/ios/chrome/app/strings/resources/ios_strings_fr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_fr.xtb
@@ -386,6 +386,7 @@ <translation id="2640733327287333451">Aucun nom d'utilisateur ••••••</translation> <translation id="264215785133931186">Vérification effectuée à l'instant</translation> <translation id="2647434099613338025">Ajouter une langue</translation> +<translation id="2649592894792404568">Vous êtes sur le point de supprimer vos données du Gestionnaire de mots de passe de Google</translation> <translation id="2652129567809778422">Sélectionner un mot de passe</translation> <translation id="2658056020748144467">Impossible ouvrir fichier</translation> <translation id="2661809266906115479"><ph name="TITLE" />, <ph name="STATE" />, uniquement sur cet appareil, <ph name="URL" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_gl.xtb b/ios/chrome/app/strings/resources/ios_strings_gl.xtb index 20505e5..a7d1f9fd 100644 --- a/ios/chrome/app/strings/resources/ios_strings_gl.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_gl.xtb
@@ -386,6 +386,7 @@ <translation id="2640733327287333451">Sen nome de usuario ••••••••</translation> <translation id="264215785133931186">Comprobación feita hai uns intres</translation> <translation id="2647434099613338025">Engadir idioma</translation> +<translation id="2649592894792404568">Estás a piques de eliminar os teus datos do xestor de contrasinais de Google</translation> <translation id="2652129567809778422">Seleccionar un contrasinal</translation> <translation id="2658056020748144467">Non se pode abrir o ficheiro</translation> <translation id="2661809266906115479"><ph name="TITLE" />, <ph name="STATE" />, só neste dispositivo, <ph name="URL" /></translation> @@ -423,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{O contrasinal gardouse na túa Conta de Google, {EMAIL}}other{Os contrasinais gardáronse na túa Conta de Google, {EMAIL}}}</translation> <translation id="2791174088547598693">Engadir contrasinal…</translation> <translation id="2797302972324086597">Código de país</translation> +<translation id="2802403747691280910">Pestanas pechadas: <ph name="NUMBER_OF_TABS_REMOVED" /></translation> <translation id="2816489851009559785">Menú → Configuración → Navegador predeterminado</translation> <translation id="2818821771744632548">Para poder restablecer o iPhone, pechouse a sesión da túa conta (<ph name="USER_NAME" />). Se queres volver iniciar a sesión, toca Continuar máis abaixo.</translation> <translation id="2819667972867209401">Cando a opción está activada, os datos gárdanse na túa Conta de Google. Cando está desactivada, os datos gárdanse só neste dispositivo e elimínanse ao pechar a sesión.</translation> @@ -1573,6 +1575,7 @@ <translation id="7975036700432177008">Probar</translation> <translation id="797588153137233716">Menú → Historial → Eliminar datos de navegación</translation> <translation id="7977451675950311423">Avísate cando usas un contrasinal vulnerado nunha violación da seguranza dos datos.</translation> +<translation id="7977482887663636093">Pestanas novas: <ph name="NUMBER_OF_TABS_ADDED" />, pestanas pechadas: <ph name="NUMBER_OF_TABS_REMOVED" /></translation> <translation id="797824194429476746">As pestanas permanecerán abertas neste dispositivo, pero o grupo eliminarase de maneira permanente.</translation> <translation id="7982789257301363584">Rede</translation> <translation id="7987685713885608670">Para dispoñer dunha maior seguranza, os teus contrasinais encríptanse no dispositivo antes de gardarse no xestor de contrasinais de Google.</translation> @@ -1756,6 +1759,7 @@ <translation id="8728922029615312208">Pechar todo</translation> <translation id="8730621377337864115">Feito</translation> <translation id="87371078663613140">Explora as opcións da barra de menú</translation> +<translation id="8739706427581741437">Pestanas novas: <ph name="NUMBER_OF_TABS_ADDED" /></translation> <translation id="8741627442233023406">{count,plural, =1{Revisar a pestana…}other{Revisar todas as pestanas…}}</translation> <translation id="8741995161408053644">É posible que a túa conta de Google teña outras formas do historial de navegación en <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation> <translation id="874599634440689554">Crear ligazón</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_gu.xtb b/ios/chrome/app/strings/resources/ios_strings_gu.xtb index e8737dc..29f4675 100644 --- a/ios/chrome/app/strings/resources/ios_strings_gu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_gu.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{પાસવર્ડને તમારા Google એકાઉન્ટ, {EMAIL}માં સાચવ્યો}one{પાસવર્ડને તમારા Google એકાઉન્ટ, {EMAIL}માં સાચવ્યો}other{પાસવર્ડને તમારા Google એકાઉન્ટ, {EMAIL}માં સાચવ્યા}}</translation> <translation id="2791174088547598693">પાસવર્ડ ઉમેરો…</translation> <translation id="2797302972324086597">દેશનો કોડ</translation> +<translation id="2802403747691280910"><ph name="NUMBER_OF_TABS_REMOVED" /> બંધ છે</translation> <translation id="2816489851009559785">મેનૂ → સેટિંગ → ડિફૉલ્ટ બ્રાઉઝર</translation> <translation id="2818821771744632548">તમારો iPhone રીસેટ કરવાની પ્રક્રિયાના ભાગ તરીકે, તમારા એકાઉન્ટ <ph name="USER_NAME" />માંથી તમને સાઇન આઉટ કરવામાં આવ્યા. ફરીથી સાઇન ઇન કરવા માટે, "ચાલુ રાખો" પર ટૅપ કરો.</translation> <translation id="2819667972867209401">જ્યારે ચાલુ હોય, ત્યારે ડેટા તમારા Google એકાઉન્ટમાં સાચવવામાં આવે છે. જ્યારે આ બંધ હોય, ત્યારે ડેટા માત્ર આ ડિવાઇસમાં સાચવવામાં આવે છે અને જો તમે સાઇન આઉટ કરો, તો ડિલીટ કરવામાં આવે છે.</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">પ્રયાસ કરો</translation> <translation id="797588153137233716">મેનૂ → ઇતિહાસ → બ્રાઉઝિંગ ડેટા ડિલીટ કરો</translation> <translation id="7977451675950311423">તમે ઉપયોગમાં લો છો તે પાસવર્ડ સાથે કોઈ ડેટા ઉલ્લંઘન દરમિયાન ચેડાં કરવામાં આવ્યા હોય તો તમને ચેતવણી આપે છે.</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> નવા ટૅબ, <ph name="NUMBER_OF_TABS_REMOVED" /> બંધ છે</translation> <translation id="797824194429476746">આ ડિવાઇસ પર ટૅબ ખુલ્લા રહેશે, પરંતુ ગ્રૂપ કાયમ માટે ડિલીટ કરવામાં આવશે.</translation> <translation id="7982789257301363584">નેટવર્ક</translation> <translation id="7987685713885608670">વધારાની સલામતી માટે, તમારા પાસવર્ડ Google પાસવર્ડ મેનેજરમાં સાચવવામાં આવે એ પહેલાં એમને તમારા ડિવાઇસમાં એન્ક્રિપ્ટ કરો.</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">બધા બંધ કરો</translation> <translation id="8730621377337864115">થઈ ગયું</translation> <translation id="87371078663613140">મેનૂ બારના વિકલ્પો વિશે શોધખોળ કરો</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> નવા ટૅબ</translation> <translation id="8741627442233023406">{count,plural, =1{ટૅબનો રિવ્યૂ કરો…}one{બધા ટૅબનો રિવ્યૂ કરો…}other{બધા ટૅબનો રિવ્યૂ કરો…}}</translation> <translation id="8741995161408053644">તમારા Google એકાઉન્ટમાં <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> પર બ્રાઉઝિંગ ઇતિહાસના બીજા સ્વરૂપો હોય શકે.</translation> <translation id="874599634440689554">લિંક બનાવો</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hi.xtb b/ios/chrome/app/strings/resources/ios_strings_hi.xtb index f78aadc..1173acd 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hi.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hi.xtb
@@ -386,6 +386,7 @@ <translation id="2640733327287333451">उपयोगकर्ता नाम नहीं है ••••••</translation> <translation id="264215785133931186">अभी-अभी जांच की गई</translation> <translation id="2647434099613338025">भाषा जोड़ें</translation> +<translation id="2649592894792404568">यह कार्रवाई करने पर Google Password Manager से जुड़ा आपका डेटा मिट जाएगा</translation> <translation id="2652129567809778422">पासवर्ड चुनें</translation> <translation id="2658056020748144467">फ़ाइल नहीं खोली जा सकी</translation> <translation id="2661809266906115479"><ph name="TITLE" />, <ph name="STATE" />, सिर्फ़ इस डिवाइस पर, <ph name="URL" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hr.xtb b/ios/chrome/app/strings/resources/ios_strings_hr.xtb index 98d5a4c..2b22bd0 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hr.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{Zaporka je spremljena na vaš Google račun, {EMAIL}}one{Zaporke su spremljene na vaš Google račun, {EMAIL}}few{Zaporke su spremljene na vaš Google račun, {EMAIL}}other{Zaporke su spremljene na vaš Google račun, {EMAIL}}}</translation> <translation id="2791174088547598693">Dodaj zaporku…</translation> <translation id="2797302972324086597">Pozivni broj</translation> +<translation id="2802403747691280910">Zatvoreno: <ph name="NUMBER_OF_TABS_REMOVED" /></translation> <translation id="2816489851009559785">Izbornik → Postavke → Zadani preglednik</translation> <translation id="2818821771744632548">Odjavljeni ste s računa <ph name="USER_NAME" /> pri vraćanju iPhonea na zadano. Da biste se ponovno prijavili, dodirnite Nastavi u nastavku.</translation> <translation id="2819667972867209401">Kada je postavka uključena, podaci se spremaju na vaš Google račun. Kad je isključeno, podaci se spremaju samo na ovaj uređaj i brišu se ako se odjavite.</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">Isprobajte</translation> <translation id="797588153137233716">Izbornik → Povijest → Brisanje podataka o pregledavanju</translation> <translation id="7977451675950311423">Upozorava ako upotrebljavate zaporku koja je ugrožena zbog neovlaštenog pristupa podacima.</translation> +<translation id="7977482887663636093">Nove kartice: <ph name="NUMBER_OF_TABS_ADDED" />, zatvoreno: <ph name="NUMBER_OF_TABS_REMOVED" /></translation> <translation id="797824194429476746">Kartice će ostati otvorene na ovom uređaju, ali će se grupa trajno izbrisati.</translation> <translation id="7982789257301363584">Mreža</translation> <translation id="7987685713885608670">Radi dodatne sigurnosti šifrirajte zaporke na uređaju prije spremanja na Google upravitelj zaporki.</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">Zatvori sve</translation> <translation id="8730621377337864115">Gotovo</translation> <translation id="87371078663613140">Istražite opcije na traci izbornika</translation> +<translation id="8739706427581741437">Nove kartice: <ph name="NUMBER_OF_TABS_ADDED" /></translation> <translation id="8741627442233023406">{count,plural, =1{Pregledajte karticu…}one{Pregledajte sve kartice…}few{Pregledajte sve kartice…}other{Pregledajte sve kartice…}}</translation> <translation id="8741995161408053644">Na Google računu možda postoje drugi oblici povijesti pregledavanja na stranici <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation> <translation id="874599634440689554">Izradi vezu</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_hu.xtb b/ios/chrome/app/strings/resources/ios_strings_hu.xtb index df4708c..7e831e8 100644 --- a/ios/chrome/app/strings/resources/ios_strings_hu.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_hu.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{Jelszó mentve az Ön Google-fiókjába ({EMAIL})}other{Jelszavak mentve az Ön Google-fiókjába ({EMAIL})}}</translation> <translation id="2791174088547598693">Jelszó hozzáadása…</translation> <translation id="2797302972324086597">Országkód</translation> +<translation id="2802403747691280910"><ph name="NUMBER_OF_TABS_REMOVED" /> bezárva</translation> <translation id="2816489851009559785">Menü → Beállítások → Alapértelmezett böngésző</translation> <translation id="2818821771744632548">Az iPhone visszaállításakor a rendszer kijelentkeztette a fiókjából (<ph name="USER_NAME" />). Az újbóli bejelentkezéshez koppintson az alábbi „Folytatás” lehetőségre.</translation> <translation id="2819667972867209401">Ha be van kapcsolva, a rendszer az Ön Google-fiókjába menti az adatokat. Ha ki van kapcsolva, a rendszer csak erre az eszközre menti az adatokat, és törli őket, ha Ön kijelentkezik.</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">Kipróbálás</translation> <translation id="797588153137233716">Menü → Előzmények → Böngészési adatok törlése</translation> <translation id="7977451675950311423">Figyelmezteti Önt, ha adatvédelmi incidensben érintett jelszót használ.</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> új lap, <ph name="NUMBER_OF_TABS_REMOVED" /> bezárva</translation> <translation id="797824194429476746">A lapok nyitva maradnak ezen az eszközön, de a csoport véglegesen törlődni fog.</translation> <translation id="7982789257301363584">Hálózat</translation> <translation id="7987685713885608670">A fokozott biztonság érdekében titkosíthatja jelszavait eszközén, mielőtt a rendszer elmenti őket a Google Jelszókezelőbe.</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">Az összes bezárása</translation> <translation id="8730621377337864115">Kész</translation> <translation id="87371078663613140">Fedezze fel a menüsorban rendelkezésre álló beállításokat</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> új lap</translation> <translation id="8741627442233023406">{count,plural, =1{A lap áttekintése…}other{Az összes lap áttekintése…}}</translation> <translation id="8741995161408053644">Előfordulhat, hogy a böngészési előzmények más formái még megtalálhatók Google-fiókjában a <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> címen.</translation> <translation id="874599634440689554">Link létrehozása</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_id.xtb b/ios/chrome/app/strings/resources/ios_strings_id.xtb index 95d7648..d22e287 100644 --- a/ios/chrome/app/strings/resources/ios_strings_id.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_id.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{Sandi disimpan di Akun Google Anda, {EMAIL}}other{Sandi disimpan di Akun Google Anda, {EMAIL}}}</translation> <translation id="2791174088547598693">Tambahkan sandi…</translation> <translation id="2797302972324086597">Kode negara</translation> +<translation id="2802403747691280910"><ph name="NUMBER_OF_TABS_REMOVED" /> ditutup</translation> <translation id="2816489851009559785">Menu → Setelan → Browser default</translation> <translation id="2818821771744632548">Anda telah logout dari akun, <ph name="USER_NAME" />, sebagai bagian dari proses reset iPhone. Untuk login kembali, ketuk "Lanjutkan" di bawah.</translation> <translation id="2819667972867209401">Jika diaktifkan, data akan disimpan di Akun Google Anda. Jika dinonaktifkan, data hanya disimpan di perangkat ini dan akan dihapus saat Anda logout.</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">Cobalah</translation> <translation id="797588153137233716">Menu → Histori → Hapus data penjelajahan</translation> <translation id="7977451675950311423">Memperingatkan Anda jika Anda menggunakan sandi yang telah dibobol dalam pelanggaran data.</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> tab baru, <ph name="NUMBER_OF_TABS_REMOVED" /> ditutup</translation> <translation id="797824194429476746">Tab akan tetap terbuka di perangkat ini, tetapi grup akan dihapus secara permanen.</translation> <translation id="7982789257301363584">Jaringan</translation> <translation id="7987685713885608670">Untuk keamanan tambahan, enkripsi sandi di perangkat Anda sebelum disimpan ke Pengelola Sandi Google.</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">Tutup semua</translation> <translation id="8730621377337864115">Selesai</translation> <translation id="87371078663613140">Jelajahi opsi di panel menu</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> tab baru</translation> <translation id="8741627442233023406">{count,plural, =1{Tinjau tab…}other{Tinjau semua tab…}}</translation> <translation id="8741995161408053644">Akun Google Anda mungkin memiliki bentuk histori penjelajahan lainnya di <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation> <translation id="874599634440689554">Buat link</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_is.xtb b/ios/chrome/app/strings/resources/ios_strings_is.xtb index 9b85f9b..cbd8ab5 100644 --- a/ios/chrome/app/strings/resources/ios_strings_is.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_is.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{Aðgangsorð vistað á Google-reikningnum þínum, {EMAIL}}one{Aðgangsorð vistuð á Google-reikningnum þínum, {EMAIL}}other{Aðgangsorð vistuð á Google-reikningnum þínum, {EMAIL}}}</translation> <translation id="2791174088547598693">Bæta aðgangsorði við…</translation> <translation id="2797302972324086597">Landskóði</translation> +<translation id="2802403747691280910"><ph name="NUMBER_OF_TABS_REMOVED" /> lokað</translation> <translation id="2816489851009559785">Valmynd → Stillingar → Sjálfgefinn vafri</translation> <translation id="2818821771744632548">Þú skráðist út af reikningnum þínum, <ph name="USER_NAME" />, í tengslum við endurstillingu iPhone. Ýttu á „Halda áfram“ hér fyrir neðan til að skrá þig aftur inn.</translation> <translation id="2819667972867209401">Ef kveikt er á þessu verða gögn vistuð á Google-reikningnum þínum. Ef slökkt er á þessu eru gögn eingöngu vistuð í þessu tæki og þeim er eytt ef þú skráir þig út.</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">Prófa</translation> <translation id="797588153137233716">Valmynd → Ferill → Eyða vefskoðunargögnum</translation> <translation id="7977451675950311423">Varar þig við ef þú notar aðgangsorð í hættu vegna öryggisbrots.</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> nýir flipar, <ph name="NUMBER_OF_TABS_REMOVED" /> lokað</translation> <translation id="797824194429476746">Fliparnir verða opnir í þessu tæki en hópnum verður eytt varanlega.</translation> <translation id="7982789257301363584">Net</translation> <translation id="7987685713885608670">Dulkóðaðu aðgangsorðin þín í tækinu áður en þau eru vistuð í aðgangsorðastjórnun Google til að auka öryggið.</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">Loka öllu</translation> <translation id="8730621377337864115">Lokið</translation> <translation id="87371078663613140">Skoðaðu valkosti á valmyndarstikunni</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> nýir flipar</translation> <translation id="8741627442233023406">{count,plural, =1{Fara yfir flipann…}one{Fara yfir alla flipa…}other{Fara yfir alla flipa…}}</translation> <translation id="8741995161408053644">Google reikningurinn þinn kann að vera með annars konar vefskoðunarferil á <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation> <translation id="874599634440689554">Búa til tengil</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_it.xtb b/ios/chrome/app/strings/resources/ios_strings_it.xtb index 5ff39e273..91c926ca 100644 --- a/ios/chrome/app/strings/resources/ios_strings_it.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_it.xtb
@@ -386,6 +386,7 @@ <translation id="2640733327287333451">Nessun nome utente ••••••</translation> <translation id="264215785133931186">Controllo appena eseguito</translation> <translation id="2647434099613338025">Aggiungi lingua</translation> +<translation id="2649592894792404568">Stai per eliminare i tuoi dati del Gestore delle password di Google</translation> <translation id="2652129567809778422">Seleziona password</translation> <translation id="2658056020748144467">Impossibile aprire il file</translation> <translation id="2661809266906115479"><ph name="TITLE" />, <ph name="STATE" />, solo su questo dispositivo, <ph name="URL" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ka.xtb b/ios/chrome/app/strings/resources/ios_strings_ka.xtb index f6a6c59..8fc6f17 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ka.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ka.xtb
@@ -1150,6 +1150,7 @@ <translation id="6160780110287872296">გსურთ ფაილის ჩამოტვირთვა?</translation> <translation id="6165508094623778733">შეიტყვეთ მეტი</translation> <translation id="6168647875670665004">სტატიების შემოთავაზება</translation> +<translation id="6169031022444660352">შენახული ავტორიზაციის მონაცემების წასაშლელად თქვენს მოწყობილობაში უნდა დააყენოთ საიდუმლო კოდი.</translation> <translation id="6173499589275053515">პაროლი შეინახა თქვენს Google ანგარიშში (<ph name="EMAIL" />)</translation> <translation id="6187302354554850004">ბოლო სინქრონიზაცია: <ph name="LAST_USED_TIME" /></translation> <translation id="6188737759358894319">შექმნის თარიღი: <ph name="DATE" /></translation> @@ -1201,6 +1202,7 @@ <translation id="6355820205320395730">სუსტი პაროლები ადვილი გამოსაცნობია, დარწმუნდით, რომ ძლიერ პაროლს ქმნით. <ph name="BEGIN_LINK" />გაეცანით უსაფრთხოებასთან დაკავშირებულ სხვა რჩევებს.<ph name="END_LINK" /></translation> <translation id="6361848730467328243"><ph name="DOMAIN_NAME" />-ისთვის თვალის მიდევნება</translation> <translation id="6368038301482806847">სიიდან აირჩიეთ საძიებო სისტემა.</translation> +<translation id="6368102751067608420">პაროლების მმართველის ყველა მონაცემის წაშლა</translation> <translation id="6374469231428023295">ხელახლა ცდა</translation> <translation id="6387994324662817823">პაროლები ინახება Google პაროლების მმართველში მხოლოდ ამ მოწყობილობაზე.</translation> <translation id="6404422529625928907">Google Drive-ში გახსნა</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_km.xtb b/ios/chrome/app/strings/resources/ios_strings_km.xtb index 02dcabd2..b479a97f 100644 --- a/ios/chrome/app/strings/resources/ios_strings_km.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_km.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{បានរក្សាទុកពាក្យសម្ងាត់នៅក្នុងគណនី Google របស់អ្នក {EMAIL}}other{បានរក្សាទុកពាក្យសម្ងាត់នៅក្នុងគណនី Google របស់អ្នក {EMAIL}}}</translation> <translation id="2791174088547598693">បញ្ចូលពាក្យសម្ងាត់…</translation> <translation id="2797302972324086597">លេខកូដប្រទេស</translation> +<translation id="2802403747691280910">បានបិទ <ph name="NUMBER_OF_TABS_REMOVED" /></translation> <translation id="2816489851009559785">ម៉ឺនុយ → ការកំណត់ → កម្មវិធីរុករកតាមអ៊ីនធឺណិតលំនាំដើម</translation> <translation id="2818821771744632548">អ្នកបានចេញពីគណនីរបស់អ្នក <ph name="USER_NAME" /> ដែលជាផ្នែកមួយនៃការកំណត់ iPhone របស់អ្នកឡើងវិញ។ ដើម្បីចូលគណនីវិញ សូមចុច "បន្ត" ខាងក្រោម។</translation> <translation id="2819667972867209401">នៅពេលបើក ទិន្នន័យត្រូវបានរក្សាទុកនៅក្នុងគណនី Google របស់អ្នក។ នៅពេលបិទ ទិន្នន័យត្រូវបានរក្សាទុកតែនៅលើឧបករណ៍នេះប៉ុណ្ណោះ និងត្រូវបានលុប ប្រសិនបើអ្នកចេញពីគណនី។</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">សាកល្បង</translation> <translation id="797588153137233716">ម៉ឺនុយ → ប្រវត្តិ → លុបទិន្នន័យរុករក</translation> <translation id="7977451675950311423">ប្រាប់ឱ្យអ្នកប្រុងប្រយ័ត្ន ប្រសិនបើអ្នកប្រើពាក្យសម្ងាត់ដែលរងការលុកលុយក្នុងការបែកធ្លាយទិន្នន័យ។</translation> +<translation id="7977482887663636093">ផ្ទាំងថ្មីៗ <ph name="NUMBER_OF_TABS_ADDED" /> បានបិទ <ph name="NUMBER_OF_TABS_REMOVED" /></translation> <translation id="797824194429476746">ផ្ទាំងនឹងនៅតែបើកនៅលើឧបករណ៍នេះ ប៉ុន្តែក្រុមនឹងត្រូវបានលុបជាអចិន្ត្រៃយ៍។</translation> <translation id="7982789257301363584">បណ្តាញ</translation> <translation id="7987685713885608670">សម្រាប់សុវត្ថិភាពបន្ថែម សូមអ៊ីនគ្រីបពាក្យសម្ងាត់នៅលើឧបករណ៍របស់អ្នក មុនពេលរក្សាទុកពាក្យសម្ងាត់ទាំងនោះទៅកម្មវិធីគ្រប់គ្រងពាក្យសម្ងាត់ Google។</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">បិទទាំងអស់</translation> <translation id="8730621377337864115">រួចរាល់</translation> <translation id="87371078663613140">រុករកជម្រើសនៅក្នុងរបារម៉ឺនុយ</translation> +<translation id="8739706427581741437">ផ្ទាំងថ្មីៗ <ph name="NUMBER_OF_TABS_ADDED" /></translation> <translation id="8741627442233023406">{count,plural, =1{ពិនិត្យមើលផ្ទាំងនេះ…}other{ពិនិត្យមើលផ្ទាំងទាំងអស់…}}</translation> <translation id="8741995161408053644">គណនី Google របស់អ្នកអាចនឹងមានទម្រង់ប្រវត្តិរុករកផ្សេងទៀតនៅ <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /></translation> <translation id="874599634440689554">បង្កើតតំណ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_kn.xtb b/ios/chrome/app/strings/resources/ios_strings_kn.xtb index 2baf4b4..d7808e9 100644 --- a/ios/chrome/app/strings/resources/ios_strings_kn.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_kn.xtb
@@ -386,6 +386,7 @@ <translation id="2640733327287333451">ಯಾವುದೇ ಬಳಕೆದಾರರ ಹೆಸರಿಲ್ಲ ••••••</translation> <translation id="264215785133931186">ಇದೀಗ ಪರಿಶೀಲಿಸಲಾಗಿರುವುದು</translation> <translation id="2647434099613338025">ಭಾಷೆಯನ್ನು ಸೇರಿಸಿ</translation> +<translation id="2649592894792404568">ನೀವು ನಿಮ್ಮ Google Password Manager ಗೆ ಸಂಬಂಧಿಸಿದ ಡೇಟಾವನ್ನು ಅಳಿಸಲಿದ್ದೀರಿ</translation> <translation id="2652129567809778422">ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ</translation> <translation id="2658056020748144467">ಫೈಲ್ ಅನ್ನು ತೆರೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ</translation> <translation id="2661809266906115479"><ph name="TITLE" />, <ph name="STATE" />, ಈ ಸಾಧನದಲ್ಲಿ ಮಾತ್ರ, <ph name="URL" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ky.xtb b/ios/chrome/app/strings/resources/ios_strings_ky.xtb index fb75567..4fccf7f6 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ky.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ky.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{Сырсөз Google аккаунтуңузга ({EMAIL}) сакталды}other{Сырсөздөр Google аккаунтуңузга ({EMAIL}) сакталды}}</translation> <translation id="2791174088547598693">Сырсөз кошуу…</translation> <translation id="2797302972324086597">Өлкөнүн коду</translation> +<translation id="2802403747691280910"><ph name="NUMBER_OF_TABS_REMOVED" /> жабылды</translation> <translation id="2816489851009559785">Меню → Жөндөөлөр → Демейки серепчи</translation> <translation id="2818821771744632548">iPhone'ду баштапкы абалга келтирүүдө <ph name="USER_NAME" /> аккаунтунан чыктыңыз. Кайрадан кирүү үчүн төмөндөгү "Улантуу" баскычын басыңыз.</translation> <translation id="2819667972867209401">Параметр күйүп турганда, маалымат Google аккаунтуңузга сакталат. Ал эми өчүп турганда ушул түзмөккө гана сакталып, аккаунтуңуздан чыкканда өчүрүлөт.</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">Байкап көрүү</translation> <translation id="797588153137233716">Меню → Таржымал → Серептөө дайындарын өчүрүү</translation> <translation id="7977451675950311423">Колдонулган сызсөздү кимдир бирөө билип алган болсо, ал тууралуу эскертет.</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> жаңы өтмөк, <ph name="NUMBER_OF_TABS_REMOVED" /> жабылды</translation> <translation id="797824194429476746">Өтмөктөр бул түзмөктө ачык бойдон калып, бирок топ биротоло өчүрүлөт.</translation> <translation id="7982789257301363584">Тармак</translation> <translation id="7987685713885608670">Кошумча коопсуздук үчүн Google Сырсөздөрдү башкаргычка сакталганга чейин сырсөздөрдү түзмөгүңүздө шифрлеңиз.</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">Баарын жабуу</translation> <translation id="8730621377337864115">Бүттү</translation> <translation id="87371078663613140">Меню тилкесиндеги параметрлерди карап чыгыңыз</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> жаңы өтмөк</translation> <translation id="8741627442233023406">{count,plural, =1{Өтмөктү карап көрүү…}other{Бардык өтмөктөрдү карап көрүү…}}</translation> <translation id="8741995161408053644">Google аккаунтуңуздун серептөө таржымалынын башка түрлөрү <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> дарегинде болушу мүмкүн.</translation> <translation id="874599634440689554">Шилтеме түзүү</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mk.xtb b/ios/chrome/app/strings/resources/ios_strings_mk.xtb index 553933c..3f6e477 100644 --- a/ios/chrome/app/strings/resources/ios_strings_mk.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_mk.xtb
@@ -386,6 +386,7 @@ <translation id="2640733327287333451">Нема корисничко име ••••••</translation> <translation id="264215785133931186">Тукушто проверено</translation> <translation id="2647434099613338025">Додајте јазик</translation> +<translation id="2649592894792404568">Ќе ги избришете вашите податоци во Google Password Manager</translation> <translation id="2652129567809778422">Изберете лозинка</translation> <translation id="2658056020748144467">Датотеката не можеше да се отвори</translation> <translation id="2661809266906115479"><ph name="TITLE" />, <ph name="STATE" />, само на уредов, <ph name="URL" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ml.xtb b/ios/chrome/app/strings/resources/ios_strings_ml.xtb index 44c8206..16045ec8 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ml.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ml.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{നിങ്ങളുടെ {EMAIL} എന്ന Google Account-ൽ സംരക്ഷിച്ച പാസ്വേഡ്}other{നിങ്ങളുടെ {EMAIL} എന്ന Google Account-ൽ സംരക്ഷിച്ച പാസ്വേഡുകൾ}}</translation> <translation id="2791174088547598693">പാസ്വേഡ് ചേർക്കുക…</translation> <translation id="2797302972324086597">രാജ്യ കോഡ്</translation> +<translation id="2802403747691280910"><ph name="NUMBER_OF_TABS_REMOVED" /> എണ്ണം അടച്ചു</translation> <translation id="2816489851009559785">മെനു → ക്രമീകരണം → ഡിഫോൾട്ട് ബ്രൗസർ</translation> <translation id="2818821771744632548">iPhone റീസെറ്റ് ചെയ്യുന്നതിന്റെ ഭാഗമായി <ph name="USER_NAME" /> എന്ന അക്കൗണ്ടിൽ നിന്ന് നിങ്ങൾ സൈൻ ഔട്ട് ചെയ്തു. തിരികെ സൈൻ ഇൻ ചെയ്യാൻ, ചുവടെയുള്ള "തുടരുക" ടാപ്പ് ചെയ്യുക.</translation> <translation id="2819667972867209401">ഓണായിരിക്കുമ്പോൾ, ഡാറ്റ നിങ്ങളുടെ Google Account-ൽ സംരക്ഷിക്കും. ഓഫായിരിക്കുമ്പോൾ, ഈ ഉപകരണത്തിൽ മാത്രമേ ഡാറ്റ സംരക്ഷിക്കൂ, സൈൻ ഔട്ട് ചെയ്താൽ ഇല്ലാതാക്കുകയും ചെയ്യും.</translation> @@ -1149,6 +1150,7 @@ <translation id="6160780110287872296">ഫയൽ ഡൗൺലോഡ് ചെയ്യണോ?</translation> <translation id="6165508094623778733">കൂടുതലറിയുക</translation> <translation id="6168647875670665004">ലേഖന നിർദ്ദേശങ്ങൾ</translation> +<translation id="6169031022444660352">സംരക്ഷിച്ച ക്രെഡൻഷ്യലുകൾ മുഴുവൻ ഇല്ലാതാക്കാൻ, നിങ്ങളുടെ ഉപകരണത്തിൽ ആദ്യം ഒരു പാസ്കോഡ് സജ്ജീകരിക്കേണ്ടതുണ്ട്.</translation> <translation id="6173499589275053515">നിങ്ങളുടെ <ph name="EMAIL" /> എന്ന Google അക്കൗണ്ടിൽ സംരക്ഷിച്ച പാസ്വേഡ്</translation> <translation id="6187302354554850004">അവസാനം സമന്വയിപ്പിച്ചത്: <ph name="LAST_USED_TIME" /></translation> <translation id="6188737759358894319"><ph name="DATE" />-ന് സൃഷ്ടിച്ചത്</translation> @@ -1200,6 +1202,7 @@ <translation id="6355820205320395730">ദുർബലമായ പാസ്വേഡുകൾ ഊഹിക്കാൻ എളുപ്പമാണ്. നിങ്ങൾ സൃഷ്ടിക്കുന്നത് ശക്തമായ പാസ്വേഡുകളാണെന്ന് ഉറപ്പാക്കുക. <ph name="BEGIN_LINK" />കൂടുതൽ സുരക്ഷാ നുറുങ്ങുകൾ കാണുക.<ph name="END_LINK" /></translation> <translation id="6361848730467328243"><ph name="DOMAIN_NAME" /> ഫോളോ ചെയ്യുക</translation> <translation id="6368038301482806847">ലിസ്റ്റിൽ നിന്ന് ഒരു തിരയൽ എഞ്ചിൻ തിരഞ്ഞെടുക്കുക.</translation> +<translation id="6368102751067608420">Password Manager ഡാറ്റ മുഴുവൻ ഇല്ലാതാക്കാൻ</translation> <translation id="6374469231428023295">വീണ്ടും ശ്രമിക്കുക</translation> <translation id="6387994324662817823">നിങ്ങളുടെ ഈ ഉപകരണത്തിലെ Google പാസ്വേഡ് മാനേജറിൽ മാത്രമേ പാസ്വേഡുകൾ സംരക്ഷിക്കൂ.</translation> <translation id="6404422529625928907">Google Drive-ൽ തുറക്കുക</translation> @@ -1574,6 +1577,7 @@ <translation id="7975036700432177008">പരീക്ഷിച്ച് നോക്കുക</translation> <translation id="797588153137233716">മെനു → ചരിത്രം → ബ്രൗസിംഗ് ഡാറ്റ ഇല്ലാതാക്കുക</translation> <translation id="7977451675950311423">ഡാറ്റാ ലംഘനത്തിൽ അപഹരിക്കപ്പെട്ട ഒരു പാസ്വേഡ് നിങ്ങൾ ഉപയോഗിക്കുകയാണെങ്കിൽ മുന്നറിയിപ്പ് നൽകുന്നു.</translation> +<translation id="7977482887663636093">പുതിയ <ph name="NUMBER_OF_TABS_ADDED" /> ടാബുകൾ, <ph name="NUMBER_OF_TABS_REMOVED" /> എണ്ണം അടച്ചു</translation> <translation id="797824194429476746">ഈ ഉപകരണത്തിൽ ടാബുകൾ തുറന്നിരിക്കും, എന്നാൽ ഗ്രൂപ്പ് ശാശ്വതമായി ഇല്ലാതാക്കും.</translation> <translation id="7982789257301363584">നെറ്റ്വർക്ക്</translation> <translation id="7987685713885608670">അധിക സുരക്ഷയ്ക്ക്, Google പാസ്വേഡ് മാനേജറിലേക്ക് സംരക്ഷിക്കുന്നതിന് മുമ്പ് നിങ്ങളുടെ ഉപകരണത്തിൽ പാസ്വേഡുകൾ എൻക്രിപ്റ്റ് ചെയ്യുക.</translation> @@ -1757,6 +1761,7 @@ <translation id="8728922029615312208">എല്ലാം അടയ്ക്കുക</translation> <translation id="8730621377337864115">പൂർത്തിയാക്കി</translation> <translation id="87371078663613140">മെനു ബാറിലെ ഓപ്ഷനുകൾ അടുത്തറിയുക</translation> +<translation id="8739706427581741437">പുതിയ <ph name="NUMBER_OF_TABS_ADDED" /> ടാബുകൾ</translation> <translation id="8741627442233023406">{count,plural, =1{ടാബ് അവലോകനം ചെയ്യുക…}other{എല്ലാ ടാബുകളും അവലോകനം ചെയ്യുക…}}</translation> <translation id="8741995161408053644">നിങ്ങളുടെ Google അക്കൗണ്ടിന് <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> എന്നതിൽ മറ്റ് തരത്തിലുള്ള ബ്രൗസിംഗ് ചരിത്രമുണ്ടായിരിക്കാം.</translation> <translation id="874599634440689554">ലിങ്ക് സൃഷ്ടിക്കുക</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mn.xtb b/ios/chrome/app/strings/resources/ios_strings_mn.xtb index 8fe8299b..21a623e 100644 --- a/ios/chrome/app/strings/resources/ios_strings_mn.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_mn.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{Таны {EMAIL} Google Бүртгэлд нууц үг хадгалсан}other{Таны {EMAIL} Google Бүртгэлд нууц үгнүүдийг хадгалсан}}</translation> <translation id="2791174088547598693">Нууц үг нэмэх…</translation> <translation id="2797302972324086597">Улсын код</translation> +<translation id="2802403747691280910"><ph name="NUMBER_OF_TABS_REMOVED" /> табыг хаасан</translation> <translation id="2816489851009559785">Цэс → Тохиргоо → Өгөгдмөл хөтөч</translation> <translation id="2818821771744632548">Таны iPhone-г шинэчлэх явцад таныг <ph name="USER_NAME" /> бүртгэлээс тань гаргасан. Буцаж нэвтрэхийн тулд доорх "Үргэлжлүүлэх"-ийг товшино уу.</translation> <translation id="2819667972867209401">Асаалттай байхад өгөгдлийг таны Google Бүртгэлд хадгалдаг. Унтраалттай байхад өгөгдлийг зөвхөн энэ төхөөрөмжид хадгалдаг бөгөөд таныг гарсан тохиолдолд устгадаг.</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">Туршиж үзэх</translation> <translation id="797588153137233716">Цэс → Түүх → Интернэтээр үзсэн өгөгдлийг устгах</translation> <translation id="7977451675950311423">Таныг өгөгдлийн зөрчилд алдагдсан нууц үгийг ашигласан тохиолдолд танд сануулна.</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> шинэ таб, <ph name="NUMBER_OF_TABS_REMOVED" /> табыг хаасан</translation> <translation id="797824194429476746">Табууд энэ төхөөрөмж дээр нээлттэй хэвээр үлдэх хэдий ч бүлгийг бүрмөсөн устгана.</translation> <translation id="7982789257301363584">Сүлжээ</translation> <translation id="7987685713885608670">Нэмэлт аюулгүй байдлын үүднээс өөрийн төхөөрөмж дээрх нууц үгнүүдийг Google-н Нууц үгний менежерт хадгалахаас нь өмнө шифрлэнэ үү.</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">Бүгдийг хаах</translation> <translation id="8730621377337864115">хийсэн</translation> <translation id="87371078663613140">Цэсийн талбар дахь сонголтыг судална уу</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> шинэ таб</translation> <translation id="8741627442233023406">{count,plural, =1{Табыг хянах…}other{Бүх табыг хянах…}}</translation> <translation id="8741995161408053644">Таны Google Бүртгэл <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />-д хайлтын түүхийн өөр хэлбэртэй байна.</translation> <translation id="874599634440689554">Холбоос үүсгэх</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_mr.xtb b/ios/chrome/app/strings/resources/ios_strings_mr.xtb index 697f26d..d73aae5 100644 --- a/ios/chrome/app/strings/resources/ios_strings_mr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_mr.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{तुमच्या {EMAIL} या Google खाते मध्ये पासवर्ड सेव्ह केला आहे}other{तुमच्या {EMAIL} या Google खाते मध्ये पासवर्ड सेव्ह केले आहेत}}</translation> <translation id="2791174088547598693">पासवर्ड जोडा…</translation> <translation id="2797302972324086597">देशाचा कोड</translation> +<translation id="2802403747691280910"><ph name="NUMBER_OF_TABS_REMOVED" /> बंद आहे</translation> <translation id="2816489851009559785">मेनू → सेटिंग्ज → डीफॉल्ट ब्राउझर</translation> <translation id="2818821771744632548">तुमच्या iPhone रीसेटचा भाग म्हणून तुम्हाला <ph name="USER_NAME" /> खात्यामधून साइन आउट केले गेले होते. पुन्हा साइन इन करण्यासाठी, खाली "पुढे सुरू ठेवा" वर टॅप करा.</translation> <translation id="2819667972867209401">सुरू असते, तेव्हा डेटा तुमच्या Google खाते मध्ये सेव्ह होतो. बंद असेल, तेव्हा डेटा फक्त या डिव्हाइसमध्ये सेव्ह केला जातो आणि तुम्ही साइन आउट केल्यास, हटवला जातो.</translation> @@ -1575,6 +1576,7 @@ <translation id="7975036700432177008">वापरुन पहा</translation> <translation id="797588153137233716">मेनू → इतिहास → ब्राउझिंग डेटा हटवा</translation> <translation id="7977451675950311423">तुम्ही डेटा भंगामध्ये धोक्यात असलेला पासवर्ड वापरल्यास, तुम्हाला चेतावणी देते.</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> नवीन टॅब, <ph name="NUMBER_OF_TABS_REMOVED" /> बंद आहे</translation> <translation id="797824194429476746">या डिव्हाइसवर टॅब उघडे राहतील, पण गट कायमचा हटवला जाईल.</translation> <translation id="7982789257301363584">नेटवर्क</translation> <translation id="7987685713885608670">अतिरिक्त सुरक्षिततेसाठी, पासवर्ड हे Google पासवर्ड व्यवस्थापक यामध्ये सेव्ह केले जाण्यापूर्वी ते तुमच्या डिव्हाइसवर एंक्रिप्ट करा.</translation> @@ -1758,6 +1760,7 @@ <translation id="8728922029615312208">सर्व बंद करा</translation> <translation id="8730621377337864115">पूर्ण झाले</translation> <translation id="87371078663613140">मेनू बारमधील पर्याय एक्सप्लोर करा</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> नवीन टॅब</translation> <translation id="8741627442233023406">{count,plural, =1{टॅबचे पुनरावलोकन करा…}other{टॅबचे पुनरावलोकन करा…}}</translation> <translation id="8741995161408053644">आपल्या Google खात्यात ब्राउझिंग इतिहासाची इतर स्वरूपे <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> वर असू शकतात.</translation> <translation id="874599634440689554">लिंक तयार करा</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ms.xtb b/ios/chrome/app/strings/resources/ios_strings_ms.xtb index 804661af..f717e34 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ms.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ms.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{Kata laluan disimpan dalam Google Account anda, {EMAIL}}other{Kata laluan disimpan dalam Google Account anda, {EMAIL}}}</translation> <translation id="2791174088547598693">Tambahkan kata laluan…</translation> <translation id="2797302972324086597">Kod negara</translation> +<translation id="2802403747691280910"><ph name="NUMBER_OF_TABS_REMOVED" /> ditutup</translation> <translation id="2816489851009559785">Menu → Tetapan → Penyemak imbas lalai</translation> <translation id="2818821771744632548">Anda telah dilog keluar daripada akaun anda, <ph name="USER_NAME" />, sebagai sebahagian daripada tetapan semula iPhone anda. Untuk log masuk semula, ketik "Teruskan" di bawah.</translation> <translation id="2819667972867209401">Apabila dihidupkan, data disimpan pada Google Account anda. Apabila dimatikan, data akan disimpan hanya pada peranti ini dan akan dipadamkan jika anda log keluar.</translation> @@ -1149,6 +1150,7 @@ <translation id="6160780110287872296">Muat turun fail?</translation> <translation id="6165508094623778733">Ketahui lebih lanjut</translation> <translation id="6168647875670665004">Cadangan artikel</translation> +<translation id="6169031022444660352">Untuk memadamkan semua bukti kelayakan yang disimpan, anda mestilah menyediakan kod laluan pada peranti anda dahulu.</translation> <translation id="6173499589275053515">Kata laluan disimpan dalam Google Account anda, <ph name="EMAIL" /></translation> <translation id="6187302354554850004">Terakhir disgrkkan: <ph name="LAST_USED_TIME" /></translation> <translation id="6188737759358894319">Dibuat pada <ph name="DATE" /></translation> @@ -1200,6 +1202,7 @@ <translation id="6355820205320395730">Kata laluan yang lemah mudah diteka. Pastikan anda sedang membuat kata laluan yang kukuh. <ph name="BEGIN_LINK" />Lihat lebih banyak petua keselamatan.<ph name="END_LINK" /></translation> <translation id="6361848730467328243">Ikuti <ph name="DOMAIN_NAME" /></translation> <translation id="6368038301482806847">Pilih enjin carian daripada senarai.</translation> +<translation id="6368102751067608420">Untuk memadamkan semua data pengurus kata laluan</translation> <translation id="6374469231428023295">Cuba Lagi</translation> <translation id="6387994324662817823">Kata laluan disimpan pada Pengurus Kata Laluan Google pada peranti ini sahaja.</translation> <translation id="6404422529625928907">Buka dalam Google Drive</translation> @@ -1574,6 +1577,7 @@ <translation id="7975036700432177008">Cuba</translation> <translation id="797588153137233716">Menu → Sejarah → Padamkan data semakan imbas</translation> <translation id="7977451675950311423">Memberikan amaran kepada anda jika anda menggunakan kata laluan yang telah terjejas dalam pelanggaran data.</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> tab baharu, <ph name="NUMBER_OF_TABS_REMOVED" /> ditutup</translation> <translation id="797824194429476746">Tab akan kekal terbuka pada peranti ini tetapi kumpulan tersebut akan dipadamkan secara kekal.</translation> <translation id="7982789257301363584">Rangkaian</translation> <translation id="7987685713885608670">Untuk keselamatan tambahan, sulitkan kata laluan pada peranti sebelum disimpan ke Pengurus Kata Laluan Google.</translation> @@ -1757,6 +1761,7 @@ <translation id="8728922029615312208">Tutup semua</translation> <translation id="8730621377337864115">Selesai</translation> <translation id="87371078663613140">Teroka pilihan dalam bar menu</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> tab baharu</translation> <translation id="8741627442233023406">{count,plural, =1{Semak tab…}other{Semak semua tab…}}</translation> <translation id="8741995161408053644">Google Account anda mungkin mempunyai sejarah penyemakan imbas dalam bentuk lain di <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation> <translation id="874599634440689554">Buat pautan</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_no.xtb b/ios/chrome/app/strings/resources/ios_strings_no.xtb index b6c5350..a5ba5194f 100644 --- a/ios/chrome/app/strings/resources/ios_strings_no.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_no.xtb
@@ -386,6 +386,7 @@ <translation id="2640733327287333451">Uten brukernavn ••••••</translation> <translation id="264215785133931186">Sjekket nettopp</translation> <translation id="2647434099613338025">Legg til språk</translation> +<translation id="2649592894792404568">Du er i ferd med å slette Google Passordlagring-dataene dine</translation> <translation id="2652129567809778422">Velg passord</translation> <translation id="2658056020748144467">Kan ikke åpne filen</translation> <translation id="2661809266906115479"><ph name="TITLE" />, <ph name="STATE" />, bare på denne enheten, <ph name="URL" /></translation> @@ -423,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{Passordet er lagret i Google-kontoen din, {EMAIL}}other{Passordene er lagret i Google-kontoen din, {EMAIL}}}</translation> <translation id="2791174088547598693">Legg til passord…</translation> <translation id="2797302972324086597">Landskode</translation> +<translation id="2802403747691280910"><ph name="NUMBER_OF_TABS_REMOVED" /> ble lukket</translation> <translation id="2816489851009559785">Meny → Innstillinger → Standardnettleser</translation> <translation id="2818821771744632548">Du ble logget av kontoen din, <ph name="USER_NAME" />, som en del av tilbakestillingen av iPhone. For å logge på igjen, trykk på «Fortsett» nedenfor.</translation> <translation id="2819667972867209401">Når dette er på, lagres data i Google-kontoen din. Når dette er av, lagres data bare på denne enheten og slettes hvis du logger av.</translation> @@ -1573,6 +1575,7 @@ <translation id="7975036700432177008">Prøv</translation> <translation id="797588153137233716">Meny → Logg → Slett nettlesingsdata</translation> <translation id="7977451675950311423">Advarer deg hvis du bruker passord som er utsatt for databrudd.</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> nye faner, <ph name="NUMBER_OF_TABS_REMOVED" /> ble lukket</translation> <translation id="797824194429476746">Fanene fortsetter å være åpne på denne enheten, men gruppen slettes permanent.</translation> <translation id="7982789257301363584">Nettverk</translation> <translation id="7987685713885608670">For ekstra trygghet kan du kryptere passord på enheten før de lagres i Google Passordlagring.</translation> @@ -1756,6 +1759,7 @@ <translation id="8728922029615312208">Lukk alle</translation> <translation id="8730621377337864115">Ferdig</translation> <translation id="87371078663613140">Utforsk alternativene på menylinjen</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> nye faner</translation> <translation id="8741627442233023406">{count,plural, =1{Gå gjennom fanen…}other{Gå gjennom alle fanene…}}</translation> <translation id="8741995161408053644">Google-kontoen din kan ha andre typer nettleserlogger på <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation> <translation id="874599634440689554">Opprett en link</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_or.xtb b/ios/chrome/app/strings/resources/ios_strings_or.xtb index ccc4e51..7131acd 100644 --- a/ios/chrome/app/strings/resources/ios_strings_or.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_or.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟ {EMAIL}ରେ ପାସୱାର୍ଡ ସେଭ କରାଯାଇଛି}other{ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟ {EMAIL}ରେ ପାସୱାର୍ଡଗୁଡ଼ିକ ସେଭ କରାଯାଇଛି}}</translation> <translation id="2791174088547598693">ପାସୱାର୍ଡ ଯୋଗ କରନ୍ତୁ…</translation> <translation id="2797302972324086597">ଦେଶର କୋଡ</translation> +<translation id="2802403747691280910"><ph name="NUMBER_OF_TABS_REMOVED" /> ବନ୍ଦ ଅଛି</translation> <translation id="2816489851009559785">ମେନୁ → ସେଟିଂସ → ଡିଫଲ୍ଟ ବ୍ରାଉଜର</translation> <translation id="2818821771744632548">ଆପଣଙ୍କ iPhone ରିସେଟର ଅଂଶ ଭାବରେ ଆପଣଙ୍କ ଆକାଉଣ୍ଟ, <ph name="USER_NAME" />ରୁ ଆପଣଙ୍କୁ ସାଇନ ଆଉଟ କରାଯାଇଛି। ପୁଣି ସାଇନ ଇନ କରିବାକୁ ନିମ୍ନରେ "ଜାରି ରଖନ୍ତୁ"ରେ ଟାପ କରନ୍ତୁ।</translation> <translation id="2819667972867209401">ଚାଲୁ ଥିବା ସମୟରେ ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟରେ ଡାଟା ସେଭ କରାଯାଏ। ବନ୍ଦ ଥିବା ସମୟରେ କେବଳ ଏହି ଡିଭାଇସରେ ଡାଟା ସେଭ କରାଯାଏ ଏବଂ ଆପଣ ସାଇନ ଆଉଟ କଲେ ଏହା ଡିଲିଟ ହୋଇଯାଏ।</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">ଚେଷ୍ଟା କରନ୍ତୁ</translation> <translation id="797588153137233716">ମେନୁ → ଇତିହାସ → ବ୍ରାଉଜିଂ ଡାଟା ଡିଲିଟ କରନ୍ତୁ</translation> <translation id="7977451675950311423">ଯଦି ଆପଣ କୌଣସି ଡାଟା ଉଲ୍ଲଙ୍ଘନରେ ଚୋରି ହୋଇଯାଇଥିବା ଏକ ପାସୱାର୍ଡ ବ୍ୟବହାର କରନ୍ତି ତେବେ ଏହା ଚେତାବନୀ ଦିଏ।</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> ନୂଆ ଟାବ, <ph name="NUMBER_OF_TABS_REMOVED" /> ବନ୍ଦ ଅଛି</translation> <translation id="797824194429476746">ଏହି ଡିଭାଇସରେ ଥିବା ଟାବ ଖୋଲା ରହିବ କିନ୍ତୁ ଗୋଷ୍ଠୀଟି ସ୍ଥାୟୀ ଭାବେ ଡିଲିଟ ହୋଇଯିବ।</translation> <translation id="7982789257301363584">ନେଟୱାର୍କ</translation> <translation id="7987685713885608670">ଅତିରିକ୍ତ ସୁରକ୍ଷା ପାଇଁ, ପାସୱାର୍ଡଗୁଡ଼ିକ Google ପାସୱାର୍ଡ ମ୍ୟାନେଜରରେ ସେଭ ହେବା ପୂର୍ବରୁ ସେଗୁଡ଼ିକୁ ଆପଣଙ୍କ ଡିଭାଇସରେ ଏନକ୍ରିପ୍ଟ କରନ୍ତୁ।</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">ସବୁ ବନ୍ଦ କରନ୍ତୁ</translation> <translation id="8730621377337864115">ସମାପ୍ତ ହୋଇଛି</translation> <translation id="87371078663613140">ମେନୁ ବାରରେ ଥିବା ବିକଳ୍ପଗୁଡ଼ିକୁ ଏକ୍ସପ୍ଲୋର କରନ୍ତୁ</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> ନୂଆ ଟାବ</translation> <translation id="8741627442233023406">{count,plural, =1{ଟାବର ସମୀକ୍ଷା କରନ୍ତୁ…}other{ସମସ୍ତ ଟାବର ସମୀକ୍ଷା କରନ୍ତୁ…}}</translation> <translation id="8741995161408053644">ଆପଣଙ୍କ Google ଆକାଉଣ୍ଟର <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />ରେ ଅନ୍ୟାନ୍ୟ ପ୍ରକାରର ବାଉଜିଂ ଇତିବୃତ୍ତି ଥାଇପାରେ।</translation> <translation id="874599634440689554">ଲିଙ୍କ ତିଆରି କରନ୍ତୁ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pa.xtb b/ios/chrome/app/strings/resources/ios_strings_pa.xtb index a15d452..9d4eb6ce 100644 --- a/ios/chrome/app/strings/resources/ios_strings_pa.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_pa.xtb
@@ -386,6 +386,7 @@ <translation id="2640733327287333451">ਕੋਈ ਵਰਤੋਂਕਾਰ ਨਾਮ ਨਹੀਂ ••••••</translation> <translation id="264215785133931186">ਹੁਣੇ ਹੀ ਜਾਂਚ ਕੀਤੀ ਗਈ</translation> <translation id="2647434099613338025">ਭਾਸ਼ਾ ਜੋੜੋ</translation> +<translation id="2649592894792404568">ਤੁਸੀਂ ਆਪਣਾ Google Password Manager ਡਾਟਾ ਮਿਟਾਉਣ ਲੱਗੇ ਹੋ</translation> <translation id="2652129567809778422">ਪਾਸਵਰਡ ਚੁਣੋ</translation> <translation id="2658056020748144467">ਫ਼ਾਈਲ ਖੋਲ੍ਹਣ ਵਿੱਚ ਅਸਮਰੱਥ</translation> <translation id="2661809266906115479"><ph name="TITLE" />, <ph name="STATE" />, ਸਿਰਫ਼ ਇਸ ਡੀਵਾਈਸ 'ਤੇ, <ph name="URL" /></translation> @@ -423,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{ਪਾਸਵਰਡ ਤੁਹਾਡੇ Google ਖਾਤੇ {EMAIL} ਵਿੱਚ ਰੱਖਿਅਤ ਹੋ ਗਿਆ ਹੈ}one{ਪਾਸਵਰਡ ਤੁਹਾਡੇ Google ਖਾਤੇ {EMAIL} ਵਿੱਚ ਰੱਖਿਅਤ ਹੋ ਗਿਆ ਹੈ}other{ਪਾਸਵਰਡ ਤੁਹਾਡੇ Google ਖਾਤੇ {EMAIL} ਵਿੱਚ ਰੱਖਿਅਤ ਹੋ ਗਏ ਹਨ}}</translation> <translation id="2791174088547598693">ਪਾਸਵਰਡ ਸ਼ਾਮਲ ਕਰੋ…</translation> <translation id="2797302972324086597">ਦੇਸ਼ ਦਾ ਕੋਡ</translation> +<translation id="2802403747691280910"><ph name="NUMBER_OF_TABS_REMOVED" /> ਨੂੰ ਬੰਦ ਕੀਤਾ ਗਿਆ</translation> <translation id="2816489851009559785">ਮੀਨੂ → ਸੈਟਿੰਗਾਂ → ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਬ੍ਰਾਊਜ਼ਰ</translation> <translation id="2818821771744632548">ਤੁਹਾਨੂੰ ਤੁਹਾਡੇ iPhone ਰੀਸੈੱਟ ਕਰਨ ਦੇ ਹਿੱਸੇ ਵਜੋਂ ਆਪਣੇ ਖਾਤੇ <ph name="USER_NAME" /> ਤੋਂ ਸਾਈਨ-ਆਊਟ ਕੀਤਾ ਗਿਆ ਸੀ। ਦੁਬਾਰਾ ਸਾਈਨ-ਇਨ ਕਰਨ ਲਈ, ਹੇਠਾਂ "ਜਾਰੀ ਰੱਖੋ" 'ਤੇ ਟੈਪ ਕਰੋ।</translation> <translation id="2819667972867209401">ਚਾਲੂ ਹੋਣ 'ਤੇ, ਡਾਟਾ ਤੁਹਾਡੇ Google ਖਾਤੇ ਵਿੱਚ ਰੱਖਿਅਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਬੰਦ ਹੋਣ 'ਤੇ, ਡਾਟਾ ਸਿਰਫ਼ ਇਸ ਡੀਵਾਈਸ 'ਤੇ ਰੱਖਿਅਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਸਾਈਨ-ਆਊਟ ਕਰਨ 'ਤੇ ਮਿਟਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ।</translation> @@ -1573,6 +1575,7 @@ <translation id="7975036700432177008">ਵਰਤ ਕੇ ਦੇਖੋ</translation> <translation id="797588153137233716">ਮੀਨੂ → ਇਤਿਹਾਸ → ਬ੍ਰਾਊਜ਼ਿੰਗ ਡਾਟਾ ਮਿਟਾਓ</translation> <translation id="7977451675950311423">ਇਹ ਤੁਹਾਨੂੰ ਚਿਤਾਵਨੀ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ ਕਿ ਕਿਤੇ ਤੁਸੀਂ ਉਸ ਪਾਸਵਰਡ ਦੀ ਵਰਤੋਂ ਤਾਂ ਨਹੀਂ ਕੀਤੀ ਜਿਸ ਨਾਲ ਡਾਟਾ ਉਲੰਘਣਾ ਵਿੱਚ ਛੇੜਛਾੜ ਕੀਤੀ ਗਈ ਹੈ।</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> ਨਵੀਆਂ ਟੈਬਾਂ, <ph name="NUMBER_OF_TABS_REMOVED" /> ਨੂੰ ਬੰਦ ਕੀਤਾ ਗਿਆ</translation> <translation id="797824194429476746">ਟੈਬਾਂ ਇਸ ਡੀਵਾਈਸ 'ਤੇ ਖੁੱਲ੍ਹੀਆਂ ਰਹਿਣਗੀਆਂ ਪਰ ਗਰੁੱਪ ਨੂੰ ਪੱਕੇ ਤੌਰ 'ਤੇ ਮਿਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ।</translation> <translation id="7982789257301363584">ਨੈੱਟਵਰਕ</translation> <translation id="7987685713885608670">ਵਾਧੂ ਸੁਰੱਖਿਆ ਲਈ, Google ਪਾਸਵਰਡ ਪ੍ਰਬੰਧਕ 'ਤੇ ਰੱਖਿਅਤ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਪਾਸਵਰਡਾਂ ਨੂੰ ਆਪਣੇ ਡੀਵਾਈਸ 'ਤੇ ਇਨਕ੍ਰਿਪਟ ਕਰੋ।</translation> @@ -1756,6 +1759,7 @@ <translation id="8728922029615312208">ਸਭ ਬੰਦ ਕਰੋ</translation> <translation id="8730621377337864115">ਹੋ ਗਿਆ</translation> <translation id="87371078663613140">ਮੀਨੂ ਬਾਰ ਵਿੱਚ ਵਿਕਲਪਾਂ ਦੀ ਪੜਚੋਲ ਕਰੋ</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> ਨਵੀਆਂ ਟੈਬਾਂ</translation> <translation id="8741627442233023406">{count,plural, =1{ਟੈਬ ਦੀ ਸਮੀਖਿਆ ਕਰੋ…}one{ਟੈਬ ਦੀ ਸਮੀਖਿਆ ਕਰੋ…}other{ਸਾਰੀਆਂ ਟੈਬਾਂ ਦੀ ਸਮੀਖਿਆ ਕਰੋ…}}</translation> <translation id="8741995161408053644">ਤੁਹਾਡੇ Google ਖਾਤੇ ਵਿੱਚ <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> 'ਤੇ ਬ੍ਰਾਊਜ਼ਿੰਗ ਇਤਿਹਾਸ ਦੀਆਂ ਹੋਰ ਕਿਸਮਾਂ ਹੋ ਸਕਦੀਆਂ ਹਨ।</translation> <translation id="874599634440689554">ਲਿੰਕ ਬਣਾਓ</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb b/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb index e3854a2..7717462 100644 --- a/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_pt-BR.xtb
@@ -386,6 +386,7 @@ <translation id="2640733327287333451">Sem nome de usuário ••••••</translation> <translation id="264215785133931186">Verificadas agora mesmo</translation> <translation id="2647434099613338025">Adicionar idioma</translation> +<translation id="2649592894792404568">Você está prestes a excluir seus dados do Gerenciador de senhas do Google</translation> <translation id="2652129567809778422">Selecionar senha</translation> <translation id="2658056020748144467">Não foi possível abrir arquivo</translation> <translation id="2661809266906115479"><ph name="TITLE" />, <ph name="STATE" />, somente neste dispositivo, <ph name="URL" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb b/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb index f4e6f96..c3457c0e 100644 --- a/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_pt-PT.xtb
@@ -1150,6 +1150,7 @@ <translation id="6160780110287872296">Transferir ficheiro?</translation> <translation id="6165508094623778733">Saiba mais</translation> <translation id="6168647875670665004">Sugestões de artigos</translation> +<translation id="6169031022444660352">Para eliminar todas as credenciais guardadas, tem de configurar primeiro um código secreto no dispositivo.</translation> <translation id="6173499589275053515">Palavra-passe guardada na sua Conta Google, <ph name="EMAIL" /></translation> <translation id="6187302354554850004">Última sincronização: <ph name="LAST_USED_TIME" /></translation> <translation id="6188737759358894319">Criada a <ph name="DATE" /></translation> @@ -1201,6 +1202,7 @@ <translation id="6355820205320395730">As palavras-passe fracas são fáceis de adivinhar. Certifique-se de que cria palavras-passe fortes. <ph name="BEGIN_LINK" />Veja mais sugestões de segurança.<ph name="END_LINK" /></translation> <translation id="6361848730467328243">Seguir <ph name="DOMAIN_NAME" /></translation> <translation id="6368038301482806847">Selecione um motor de pesquisa na lista.</translation> +<translation id="6368102751067608420">Para eliminar todos os dados do Gestor de Palavras-passe</translation> <translation id="6374469231428023295">Tentar novamente</translation> <translation id="6387994324662817823">As palavras-passe são guardadas no Gestor de palavras-passe da Google apenas neste dispositivo.</translation> <translation id="6404422529625928907">Abrir no Google Drive</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ru.xtb b/ios/chrome/app/strings/resources/ios_strings_ru.xtb index 676acaf..1475f915 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ru.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ru.xtb
@@ -386,6 +386,7 @@ <translation id="2640733327287333451">Имя пользователя не указано ••••••</translation> <translation id="264215785133931186">Выполнена только что</translation> <translation id="2647434099613338025">Добавить язык</translation> +<translation id="2649592894792404568">Вы собираетесь удалить данные из Google Менеджера паролей</translation> <translation id="2652129567809778422">Выбрать пароль</translation> <translation id="2658056020748144467">Невозможно открыть файл</translation> <translation id="2661809266906115479"><ph name="TITLE" />, <ph name="STATE" />, только на этом устройстве, <ph name="URL" /></translation> @@ -423,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{Пароль сохранен в вашем аккаунте Google ({EMAIL}).}one{Пароли сохранены в вашем аккаунте Google ({EMAIL}).}few{Пароли сохранены в вашем аккаунте Google ({EMAIL}).}many{Пароли сохранены в вашем аккаунте Google ({EMAIL}).}other{Пароли сохранены в вашем аккаунте Google ({EMAIL}).}}</translation> <translation id="2791174088547598693">Добавить пароль</translation> <translation id="2797302972324086597">Код страны</translation> +<translation id="2802403747691280910">Закрыто вкладок: <ph name="NUMBER_OF_TABS_REMOVED" /></translation> <translation id="2816489851009559785">Меню → Настройки → Браузер по умолчанию</translation> <translation id="2818821771744632548">В результате сброса настроек iPhone произошел выход из аккаунта <ph name="USER_NAME" />. Чтобы войти, нажмите "Продолжить" ниже.</translation> <translation id="2819667972867209401">Если параметр включен, данные сохраняются в аккаунте Google. Если нет, данные остаются только на этом устройстве и удаляются при выходе из аккаунта.</translation> @@ -1573,6 +1575,7 @@ <translation id="7975036700432177008">Запустить</translation> <translation id="797588153137233716">Меню → История → Удалить данные о работе в браузере</translation> <translation id="7977451675950311423">Предупреждает, если вы используете пароль, скомпрометированный в результате утечки данных.</translation> +<translation id="7977482887663636093">Добавлено вкладок: <ph name="NUMBER_OF_TABS_ADDED" />, закрыто: <ph name="NUMBER_OF_TABS_REMOVED" /></translation> <translation id="797824194429476746">Вкладки на устройстве останутся открытыми, но группа будет навсегда удалена.</translation> <translation id="7982789257301363584">Сеть</translation> <translation id="7987685713885608670">Чтобы надежнее защитить пароли, включите их шифрование на устройстве перед сохранением в Google Менеджере паролей.</translation> @@ -1756,6 +1759,7 @@ <translation id="8728922029615312208">Закрыть все</translation> <translation id="8730621377337864115">Готово</translation> <translation id="87371078663613140">Изучите параметры в строке меню.</translation> +<translation id="8739706427581741437">Добавлено вкладок: <ph name="NUMBER_OF_TABS_ADDED" /></translation> <translation id="8741627442233023406">{count,plural, =1{Посмотреть вкладку}one{Посмотреть все вкладки}few{Посмотреть все вкладки}many{Посмотреть все вкладки}other{Посмотреть все вкладки}}</translation> <translation id="8741995161408053644">История просмотра также может храниться в вашем аккаунте Google: <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation> <translation id="874599634440689554">Создать ссылку</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_si.xtb b/ios/chrome/app/strings/resources/ios_strings_si.xtb index 7d1f0d2..0d8e7b28 100644 --- a/ios/chrome/app/strings/resources/ios_strings_si.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_si.xtb
@@ -386,6 +386,7 @@ <translation id="2640733327287333451">පරිශීලක නාමයක් නැත ••••••</translation> <translation id="264215785133931186">මේ දැන් පරීක්ෂා කරන ලදි</translation> <translation id="2647434099613338025">භාෂාව එක් කරන්න</translation> +<translation id="2649592894792404568">ඔබ ඔබේ Google මුරපද කළමනාකරු දත්ත මැකීමට ආසන්නයි</translation> <translation id="2652129567809778422">මුරපදය තෝරන්න</translation> <translation id="2658056020748144467">ගොනුව විවෘත කිරීමට නොහැකි වේ</translation> <translation id="2661809266906115479"><ph name="TITLE" />, <ph name="STATE" />, මෙම උපාංගය මත පමණි, <ph name="URL" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sk.xtb b/ios/chrome/app/strings/resources/ios_strings_sk.xtb index 97587dc..9c85dc8 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sk.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sk.xtb
@@ -386,6 +386,7 @@ <translation id="2640733327287333451">Žiadne používateľské meno ••••••</translation> <translation id="264215785133931186">Kontrola prebehla pred chvíľou</translation> <translation id="2647434099613338025">Pridať jazyk</translation> +<translation id="2649592894792404568">Chystáte sa odstrániť údaje Správcu hesiel Google</translation> <translation id="2652129567809778422">Vyberte heslo</translation> <translation id="2658056020748144467">Súbor sa nedá otvoriť</translation> <translation id="2661809266906115479"><ph name="TITLE" />, <ph name="STATE" />, iba v tomto zariadení, <ph name="URL" /></translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sl.xtb b/ios/chrome/app/strings/resources/ios_strings_sl.xtb index 88656c2..3507f92 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sl.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sl.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{Geslo je shranjeno v računu Google, {EMAIL}}one{Gesla so shranjena v računu Google, {EMAIL}}two{Gesla so shranjena v računu Google, {EMAIL}}few{Gesla so shranjena v računu Google, {EMAIL}}other{Gesla so shranjena v računu Google, {EMAIL}}}</translation> <translation id="2791174088547598693">Dodajanje gesla …</translation> <translation id="2797302972324086597">Koda države</translation> +<translation id="2802403747691280910"><ph name="NUMBER_OF_TABS_REMOVED" /> – zaprto</translation> <translation id="2816489851009559785">Meni → Nastavitve → Privzeti brskalnik</translation> <translation id="2818821771744632548">Zaradi ponastavitve iPhona ste bili odjavljeni iz računa <ph name="USER_NAME" />. Če se želite znova prijaviti, spodaj kliknite »Continue« (Naprej).</translation> <translation id="2819667972867209401">Če je ta možnost vklopljena, se podatki shranjujejo v računu Google. Če je izklopljena, se podatki shranjujejo samo v tej napravi in se izbrišejo, če se odjavite.</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">Preskus</translation> <translation id="797588153137233716">Meni → Zgodovina → Brisanje podatkov brskanja</translation> <translation id="7977451675950311423">Opozori vas, če uporabite geslo, ki je ogroženo zaradi podatkovne kršitve.</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> – novi zavihki, <ph name="NUMBER_OF_TABS_REMOVED" /> – zaprto</translation> <translation id="797824194429476746">Zavihki bodo ostali odprti v tej napravi, vendar bo skupina trajno izbrisana.</translation> <translation id="7982789257301363584">Omrežje</translation> <translation id="7987685713885608670">Zaradi dodatne varnosti šifrirajte gesla v napravi, preden se shranijo v Google Upravitelju gesel.</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">Zapri vse</translation> <translation id="8730621377337864115">Končano</translation> <translation id="87371078663613140">Raziščite možnosti v menijski vrstici</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> – novi zavihki</translation> <translation id="8741627442233023406">{count,plural, =1{Preglejte zavihek …}one{Preglejte vse zavihke …}two{Preglejte vse zavihke …}few{Preglejte vse zavihke …}other{Preglejte vse zavihke …}}</translation> <translation id="8741995161408053644">V Google Računu so morda druge vrste zgodovine brskanja na <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation> <translation id="874599634440689554">Ustvari povezavo</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb b/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb index 90abfbd..07a92fbd 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sr-Latn.xtb
@@ -1150,6 +1150,7 @@ <translation id="6160780110287872296">Želite da preuzmete fajl?</translation> <translation id="6165508094623778733">Saznajte više</translation> <translation id="6168647875670665004">Predlozi članaka</translation> +<translation id="6169031022444660352">Da biste izbrisali sve sačuvane akreditive, prvo morate da podesite šifru na uređaju.</translation> <translation id="6173499589275053515">Lozinka je sačuvana na Google nalogu, <ph name="EMAIL" /></translation> <translation id="6187302354554850004">Poslednja sinhron.: <ph name="LAST_USED_TIME" /></translation> <translation id="6188737759358894319">Napravljeno <ph name="DATE" /></translation> @@ -1201,6 +1202,7 @@ <translation id="6355820205320395730">Slabe lozinke lako mogu da se pogode. Obavezno napravite jake lozinke. <ph name="BEGIN_LINK" />Pogledajte još saveta za bezbednost.<ph name="END_LINK" /></translation> <translation id="6361848730467328243">Pratite <ph name="DOMAIN_NAME" /></translation> <translation id="6368038301482806847">Odaberite pretraživač sa liste.</translation> +<translation id="6368102751067608420">Da biste izbrisali sve podatke menadžera lozinki</translation> <translation id="6374469231428023295">Probaj ponovo</translation> <translation id="6387994324662817823">Lozinke se čuvaju u Google menadžeru lozinki samo na ovom uređaju.</translation> <translation id="6404422529625928907">Otvorite na Google disku</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sr.xtb b/ios/chrome/app/strings/resources/ios_strings_sr.xtb index 653cf85..54068b3 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sr.xtb
@@ -1150,6 +1150,7 @@ <translation id="6160780110287872296">Желите да преузмете фајл?</translation> <translation id="6165508094623778733">Сазнајте више</translation> <translation id="6168647875670665004">Предлози чланака</translation> +<translation id="6169031022444660352">Да бисте избрисали све сачуване акредитиве, прво морате да подесите шифру на уређају.</translation> <translation id="6173499589275053515">Лозинка је сачувана на Google налогу, <ph name="EMAIL" /></translation> <translation id="6187302354554850004">Последња синхрон.: <ph name="LAST_USED_TIME" /></translation> <translation id="6188737759358894319">Направљено <ph name="DATE" /></translation> @@ -1201,6 +1202,7 @@ <translation id="6355820205320395730">Слабе лозинке лако могу да се погоде. Обавезно направите јаке лозинке. <ph name="BEGIN_LINK" />Погледајте још савета за безбедност.<ph name="END_LINK" /></translation> <translation id="6361848730467328243">Пратите <ph name="DOMAIN_NAME" /></translation> <translation id="6368038301482806847">Одаберите претраживач са листе.</translation> +<translation id="6368102751067608420">Да бисте избрисали све податке менаџера лозинки</translation> <translation id="6374469231428023295">Пробај поново</translation> <translation id="6387994324662817823">Лозинке се чувају у Google менаџеру лозинки само на овом уређају.</translation> <translation id="6404422529625928907">Отворите на Google диску</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_sw.xtb b/ios/chrome/app/strings/resources/ios_strings_sw.xtb index 7ebbcac7..75b6496a 100644 --- a/ios/chrome/app/strings/resources/ios_strings_sw.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_sw.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{Nenosiri limehifadhiwa kwenye Akaunti yako ya Google, {EMAIL}}other{Manenosiri yamehifadhiwa kwenye Akaunti yako ya Google, {EMAIL}}}</translation> <translation id="2791174088547598693">Weka Nenosiri…</translation> <translation id="2797302972324086597">Msimbo wa nchi</translation> +<translation id="2802403747691280910">Umefunga <ph name="NUMBER_OF_TABS_REMOVED" /></translation> <translation id="2816489851009559785">Menyu → Mipangilio → Kivinjari chaguomsingi</translation> <translation id="2818821771744632548">Uliondolewa kwenye akaunti yako, <ph name="USER_NAME" />, ikiwa ni sehemu ya kuweka upya mipangilio ya iPhone yako. Ili uingie tena katika akaunti, bofya "Endelea" hapa chini.</translation> <translation id="2819667972867209401">Ukiwasha, data inahifadhiwa kwenye Akaunti yako ya Google. Ukizima, inahifadhi data kwenye kifaa hiki pekee na inafutwa iwapo utaondoka kwenye akaunti.</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">Jaribu</translation> <translation id="797588153137233716">Menyu → Historia → Futa data ya kuvinjari</translation> <translation id="7977451675950311423">Hukutahadharisha iwapo unatumia nenosiri ambalo limeathiriwa na ufichuzi haramu wa data.</translation> +<translation id="7977482887663636093">Vichupo <ph name="NUMBER_OF_TABS_ADDED" /> vipya, umefunga <ph name="NUMBER_OF_TABS_REMOVED" /></translation> <translation id="797824194429476746">Vichupo hivi havitafungwa kwenye kifaa hiki lakini kikundi kitafutwa kabisa.</translation> <translation id="7982789257301363584">Mtandao</translation> <translation id="7987685713885608670">Ili kuimarisha usalama, simba manenosiri kwa njia fiche kwenye kifaa chako kabla hayajahifadhiwa kwenye Kidhibiti cha Manenosiri cha Google.</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">Funga vyote</translation> <translation id="8730621377337864115">Nimemaliza</translation> <translation id="87371078663613140">Angalia chaguo katika upau wa menyu</translation> +<translation id="8739706427581741437">Vichupo <ph name="NUMBER_OF_TABS_ADDED" /> vipya</translation> <translation id="8741627442233023406">{count,plural, =1{Kagua kichupo…}other{Kagua vichupo vyote…}}</translation> <translation id="8741995161408053644">Huenda Akaunti yako ya Google ina aina nyingine za historia ya kuvinjari kwenye <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />.</translation> <translation id="874599634440689554">Buni kiungo</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_te.xtb b/ios/chrome/app/strings/resources/ios_strings_te.xtb index 7c48faf..186d77b 100644 --- a/ios/chrome/app/strings/resources/ios_strings_te.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_te.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{మీ Google ఖాతా, {EMAIL}లో పాస్వర్డ్ సేవ్ చేయబడింది}other{మీ Google ఖాతా, {EMAIL}లో పాస్వర్డ్లను సేవ్ చేయబడ్డాయి}}</translation> <translation id="2791174088547598693">పాస్వర్డ్ను జోడించండి…</translation> <translation id="2797302972324086597">దేశం కోడ్</translation> +<translation id="2802403747691280910"><ph name="NUMBER_OF_TABS_REMOVED" /> మూసివేయబడ్డాయి</translation> <translation id="2816489851009559785">మెనూ → సెట్టింగ్లు → ఆటోమేటిక్ బ్రౌజర్</translation> <translation id="2818821771744632548">మీ iPhone రీసెట్ ప్రాసెస్లో భాగంగా మీరు మీ ఖాతా <ph name="USER_NAME" /> నుండి సైన్ అవుట్ చేయబడ్డారు. తిరిగి సైన్ ఇన్ చేయడానికి, దిగువున ఉన్న "కొనసాగండి" అనే ఆప్షన్ను ట్యాప్ చేయండి.</translation> <translation id="2819667972867209401">ఆన్లో ఉన్నప్పుడు, మీ Google ఖాతాలో డేటా సేవ్ చేయబడుతుంది. ఆఫ్లో ఉన్నప్పుడు, డేటా ఈ పరికరంలో మాత్రమే సేవ్ అవుతుంది, మీరు సైన్ అవుట్ చేస్తే తొలగించబడుతుంది.</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">ప్రయత్నించు</translation> <translation id="797588153137233716">మెనూ → హిస్టరీ → బ్రౌజింగ్ డేటాను తొలగించండి</translation> <translation id="7977451675950311423">మీరు డేటా ఉల్లంఘనలో చోరీకి గురైన పాస్వర్డ్ని ఉపయోగిస్తే అది మిమ్మల్ని హెచ్చరిస్తుంది.</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> కొత్త ట్యాబ్లు, <ph name="NUMBER_OF_TABS_REMOVED" /> మూసివేయబడ్డాయి</translation> <translation id="797824194429476746">ఈ పరికరంలో ట్యాబ్లు అలాగే తెరిచి ఉంటాయి, కానీ గ్రూప్ శాశ్వతంగా తొలగించబడుతుంది.</translation> <translation id="7982789257301363584">నెట్వర్క్</translation> <translation id="7987685713885608670">అదనపు భద్రత కోసం, పాస్వర్డ్లు Google Password Managerలో సేవ్ కావడానికి ముందు, వాటిని మీ పరికరంలో ఎన్క్రిప్ట్ చేయండి.</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">అన్నింటినీ మూసివేయండి</translation> <translation id="8730621377337864115">పూర్తయింది</translation> <translation id="87371078663613140">మెనూ బార్లోని ఆప్షన్లను అన్వేషించండి</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> కొత్త ట్యాబ్లు</translation> <translation id="8741627442233023406">{count,plural, =1{ట్యాబ్ను రివ్యూ చేయండి…}other{ట్యాబ్లన్నింటినీ రివ్యూ చేయండి…}}</translation> <translation id="8741995161408053644"><ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" />వద్ద మీ Google ఖాతాలో ఇతర బ్రౌజింగ్ హిస్టరీ రకాలు ఉండవచ్చు.</translation> <translation id="874599634440689554">లింక్ను క్రియేట్ చేయండి</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_th.xtb b/ios/chrome/app/strings/resources/ios_strings_th.xtb index aa96afc..982cdfe 100644 --- a/ios/chrome/app/strings/resources/ios_strings_th.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_th.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{บันทึกรหัสผ่านไว้ในบัญชี Google {EMAIL} แล้ว}other{บันทึกรหัสผ่านไว้ในบัญชี Google {EMAIL} แล้ว}}</translation> <translation id="2791174088547598693">เพิ่มรหัสผ่าน…</translation> <translation id="2797302972324086597">รหัสประเทศ</translation> +<translation id="2802403747691280910">ปิดไปแล้ว <ph name="NUMBER_OF_TABS_REMOVED" /> แท็บ</translation> <translation id="2816489851009559785">เมนู → การตั้งค่า → เบราว์เซอร์เริ่มต้น</translation> <translation id="2818821771744632548">คุณออกจากระบบบัญชี <ph name="USER_NAME" /> ในขั้นตอนการรีเซ็ต iPhone หากต้องการลงชื่อเข้าใช้อีกครั้ง ให้แตะ "ต่อไป" ด้านล่าง</translation> <translation id="2819667972867209401">เมื่อเปิดไว้ ระบบจะบันทึกข้อมูลในบัญชี Google ของคุณ เมื่อปิดไว้ ระบบจะบันทึกข้อมูลในอุปกรณ์เครื่องนี้เท่านั้นและข้อมูลจะถูกลบหากคุณออกจากระบบ</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">ลอง</translation> <translation id="797588153137233716">เมนู → ประวัติการเข้าชม → ลบข้อมูลการท่องเว็บ</translation> <translation id="7977451675950311423">เตือนคุณหากใช้รหัสผ่านที่ถูกละเมิดในการละเมิดข้อมูล</translation> +<translation id="7977482887663636093">แท็บใหม่ <ph name="NUMBER_OF_TABS_ADDED" /> แท็บ ปิดไปแล้ว <ph name="NUMBER_OF_TABS_REMOVED" /> แท็บ</translation> <translation id="797824194429476746">แท็บจะยังคงเปิดอยู่ในอุปกรณ์นี้ แต่ระบบจะลบกลุ่มอย่างถาวร</translation> <translation id="7982789257301363584">เครือข่าย</translation> <translation id="7987685713885608670">เข้ารหัสให้แก่รหัสผ่านในอุปกรณ์ก่อนบันทึกลงในเครื่องมือจัดการรหัสผ่านบน Google เพื่อเพิ่มความปลอดภัย</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">ปิดทั้งหมด</translation> <translation id="8730621377337864115">เสร็จสิ้น</translation> <translation id="87371078663613140">สํารวจตัวเลือกในแถบเมนู</translation> +<translation id="8739706427581741437">แท็บใหม่ <ph name="NUMBER_OF_TABS_ADDED" /> แท็บ</translation> <translation id="8741627442233023406">{count,plural, =1{ดูแท็บ…}other{ดูแท็บทั้งหมด…}}</translation> <translation id="8741995161408053644">บัญชี Google ของคุณอาจมีประวัติการท่องเว็บในรูปแบบอื่นๆ ที่ <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /></translation> <translation id="874599634440689554">สร้างลิงก์</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_tr.xtb b/ios/chrome/app/strings/resources/ios_strings_tr.xtb index 5972836..a7efd09d 100644 --- a/ios/chrome/app/strings/resources/ios_strings_tr.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_tr.xtb
@@ -386,6 +386,7 @@ <translation id="2640733327287333451">Kullanıcı Adı Yok ••••••</translation> <translation id="264215785133931186">Az önce kontrol edildi</translation> <translation id="2647434099613338025">Dil ekle</translation> +<translation id="2649592894792404568">Google Şifre Yöneticisi verilerinizi silmek üzeresiniz</translation> <translation id="2652129567809778422">Şifreyi seçin</translation> <translation id="2658056020748144467">Dosya açılamıyor</translation> <translation id="2661809266906115479"><ph name="TITLE" />, <ph name="STATE" />, yalnızca bu cihazda, <ph name="URL" /></translation> @@ -407,7 +408,7 @@ <translation id="2708051474374549906">Tarama verilerinizin Google'a gönderilmesi aracılığıyla tehlikeli siteler, indirmeler ve uzantılara karşı gerçek zamanlı, proaktif koruma</translation> <translation id="2709516037105925701">Otomatik doldurma</translation> <translation id="271033894570825754">Yeni</translation> -<translation id="2718352093833049315">Yaln. Kablosuzda</translation> +<translation id="2718352093833049315">Kablosuz ağ varken</translation> <translation id="2721190673959776287">Bağlama dayalı panel için günde birden fazla kez görünen ürün içi zengin yardım örneği.</translation> <translation id="2747003861858887689">Önceki alan</translation> <translation id="2749231692441336879"><ph name="CHANNEL_NAME" /> takip ediliyor</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_ur.xtb b/ios/chrome/app/strings/resources/ios_strings_ur.xtb index fd0e1c5..d688ca5c7 100644 --- a/ios/chrome/app/strings/resources/ios_strings_ur.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_ur.xtb
@@ -386,6 +386,7 @@ <translation id="2640733327287333451">کوئی صارف نام نہیں ہے ••••••</translation> <translation id="264215785133931186">ابھی چیک کیا گيا</translation> <translation id="2647434099613338025">زبان شامل کریں</translation> +<translation id="2649592894792404568">آپ اپنے Google پاس ورڈ مینیجر کا ڈیٹا حذف کرنے والے ہیں</translation> <translation id="2652129567809778422">پاس ورڈ منتخب کریں</translation> <translation id="2658056020748144467">فائل کو کھولنے سے قاصر</translation> <translation id="2661809266906115479"><ph name="TITLE" />، <ph name="STATE" />، صرف اس آلہ پر، <ph name="URL" /></translation> @@ -423,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{آپ کے Google اکاؤنٹ {EMAIL} میں پاس ورڈ محفوظ کیا گیا ہے}other{آپ کے Google اکاؤنٹ {EMAIL} میں پاس ورڈز محفوظ کیے گئے ہیں}}</translation> <translation id="2791174088547598693">پاس ورڈ شامل کریں…</translation> <translation id="2797302972324086597">ملک کا کوڈ</translation> +<translation id="2802403747691280910"><ph name="NUMBER_OF_TABS_REMOVED" /> کو بند کیا گیا</translation> <translation id="2816489851009559785">مینو ← ترتیبات ← ڈیفالٹ براؤزر</translation> <translation id="2818821771744632548">آپ اپنے iPhone ری سیٹ کے حصے کے طور پر اپنے اکاؤنٹ <ph name="USER_NAME" /> سے سائن آؤٹ ہو گئے تھے۔ واپس سائن ان کرنے کے لیے، نیچے "جاری رکھیں" پر تھپتھپائیں۔</translation> <translation id="2819667972867209401">آن ہونے پر، ڈیٹا آپ کے Google اکاؤنٹ میں محفوظ ہوتا ہے۔ آف ہونے پر، ڈیٹا صرف اس آلہ میں محفوظ ہوتا ہے اور اگر آپ سائن آؤٹ کرتے ہیں تو اسے حذف کر دیا جاتا ہے۔</translation> @@ -1573,6 +1575,7 @@ <translation id="7975036700432177008">آزمائیں</translation> <translation id="797588153137233716">مینو ← سرگزشت ← براؤزنگ ڈیٹا حذف کریں</translation> <translation id="7977451675950311423">اگر آپ کوئی ایسا پاس ورڈ استعمال کرتے ہیں جس سے ڈیٹا کی خلاف ورزی میں سمجھوتہ کیا گیا ہو تو آپ کو متنبہ کرتا ہے۔</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> نئے ٹیبز، <ph name="NUMBER_OF_TABS_REMOVED" /> بند کیے گئے</translation> <translation id="797824194429476746">اس آلے پر ٹیبز کھلے رہیں گے، لیکن گروپ مستقل طور پر حذف ہو جائے گا۔</translation> <translation id="7982789257301363584">نیٹ ورک</translation> <translation id="7987685713885608670">اضافی حفاظت کے لیے، پاس ورڈز کو Google پاس ورڈ مینیجر میں محفوظ کرنے سے پہلے اپنے آلے پر مرموز کریں۔</translation> @@ -1756,6 +1759,7 @@ <translation id="8728922029615312208">تمام بند کریں</translation> <translation id="8730621377337864115">ہوگیا</translation> <translation id="87371078663613140">مینیو بار میں موجود اختیارات کو دریافت کریں</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> نئے ٹیبز</translation> <translation id="8741627442233023406">{count,plural, =1{ٹیب کا جائزہ لیں…}other{تمام ٹیبز کا جائزہ لیں…}}</translation> <translation id="8741995161408053644">ممکن ہے کہ <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> پر آپ کے Google اکاؤنٹ میں براؤزنگ کی سرگزشت کی دیگر فارمز موجود ہوں۔</translation> <translation id="874599634440689554">لنک بنائیں</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_uz.xtb b/ios/chrome/app/strings/resources/ios_strings_uz.xtb index ac53125..8f758896 100644 --- a/ios/chrome/app/strings/resources/ios_strings_uz.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_uz.xtb
@@ -1150,6 +1150,7 @@ <translation id="6160780110287872296">Fayl yuklab olinsinmi?</translation> <translation id="6165508094623778733">Batafsil</translation> <translation id="6168647875670665004">Maqola takliflari</translation> +<translation id="6169031022444660352">Barcha saqlangan hisob maʼlumotlarini oʻchirish uchun avval qurilmangizda kirish kodini sozlashingiz shart.</translation> <translation id="6173499589275053515">Parol Google hisobingizga (<ph name="EMAIL" />) saqlandi</translation> <translation id="6187302354554850004">Oxirgi sinxronizatsiya: <ph name="LAST_USED_TIME" /></translation> <translation id="6188737759358894319">Yaratilgan: <ph name="DATE" /></translation> @@ -1201,6 +1202,7 @@ <translation id="6355820205320395730">Kuchsiz parollar oson topiladi. Kuchli parol yarating. <ph name="BEGIN_LINK" />Xavfsizlikka oid boshqa maslahatlar bilan tanishing.<ph name="END_LINK" /></translation> <translation id="6361848730467328243"><ph name="DOMAIN_NAME" /> saytini kuzatish</translation> <translation id="6368038301482806847">Qidiruv tizimini tanlang.</translation> +<translation id="6368102751067608420">Barcha parollar menejeri maʼlumotlarini oʻchirish uchun</translation> <translation id="6374469231428023295">Qaytadan</translation> <translation id="6387994324662817823">Parollar faqat shu qurilmadagi Google Parollar menejeriga saqlanadi.</translation> <translation id="6404422529625928907">Google Driveʼda ochish</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb index 40469ad2..07afdb3 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zh-CN.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{密码已保存到您的 Google 账号 {EMAIL}}other{密码已保存到您的 Google 账号 {EMAIL}}}</translation> <translation id="2791174088547598693">添加密码…</translation> <translation id="2797302972324086597">国家/地区代码</translation> +<translation id="2802403747691280910"><ph name="NUMBER_OF_TABS_REMOVED" /> 个已关闭</translation> <translation id="2816489851009559785">菜单 → 设置 → 默认浏览器</translation> <translation id="2818821771744632548">您在 iPhone 重置过程中退出了账号 <ph name="USER_NAME" />。如需重新登录,请点按下方的“继续”。</translation> <translation id="2819667972867209401">当此设置处于开启状态时,数据会保存在您的 Google 账号中。当此设置处于关闭状态时,数据只会保存到此设备上,并且会在您退出账号后被删除。</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">试用</translation> <translation id="797588153137233716">菜单 → 历史记录 → 删除浏览数据</translation> <translation id="7977451675950311423">若您使用的密码遭遇了数据泄露,向您发出警告。</translation> +<translation id="7977482887663636093"><ph name="NUMBER_OF_TABS_ADDED" /> 个新标签页,<ph name="NUMBER_OF_TABS_REMOVED" /> 个已关闭</translation> <translation id="797824194429476746">相应标签页将在此设备上保持打开状态,但分组将被永久删除。</translation> <translation id="7982789257301363584">网络</translation> <translation id="7987685713885608670">为了提高安全性,请先在设备上对密码进行加密,然后再将其保存到 Google 密码管理工具中。</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">全部关闭</translation> <translation id="8730621377337864115">完成</translation> <translation id="87371078663613140">浏览菜单栏中的选项</translation> +<translation id="8739706427581741437"><ph name="NUMBER_OF_TABS_ADDED" /> 个新标签页</translation> <translation id="8741627442233023406">{count,plural, =1{查看标签页…}other{查看所有标签页…}}</translation> <translation id="8741995161408053644">您的 Google 账号在 <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> 上可能有其他形式的浏览记录。</translation> <translation id="874599634440689554">创建链接</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb index c4059e7..ff4f4c7 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zh-HK.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{密碼已儲存至 Google 帳戶 ({EMAIL})}other{密碼已儲存至 Google 帳戶 ({EMAIL})}}</translation> <translation id="2791174088547598693">新增密碼…</translation> <translation id="2797302972324086597">國家/地區代碼</translation> +<translation id="2802403747691280910">已關閉 <ph name="NUMBER_OF_TABS_REMOVED" /> 個分頁</translation> <translation id="2816489851009559785">選單 → 設定 → 預設瀏覽器</translation> <translation id="2818821771744632548">您已在重設 iPhone 時登出帳戶 (<ph name="USER_NAME" />),如要重新登入,請輕按下方的 [繼續]。</translation> <translation id="2819667972867209401">如果開啟,資料就會儲存至你的 Google 帳戶。關閉後,資料只會儲存至此裝置,並在你登出後刪除。</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">試用</translation> <translation id="797588153137233716">選單 → 記錄 → 刪除瀏覽資料</translation> <translation id="7977451675950311423">如果你使用在資料外洩中被盜用的密碼,系統便會向你發出警告。</translation> +<translation id="7977482887663636093">新增 <ph name="NUMBER_OF_TABS_ADDED" /> 個分頁,並關閉 <ph name="NUMBER_OF_TABS_REMOVED" /> 個分頁</translation> <translation id="797824194429476746">系統不會在此裝置上關閉這些分頁,但會永久刪除此群組。</translation> <translation id="7982789257301363584">網絡</translation> <translation id="7987685713885608670">為進一步增強安全性,請先在裝置上將密碼加密,然後才將密碼儲存至 Google 密碼管理工具。</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">全部關閉</translation> <translation id="8730621377337864115">完成</translation> <translation id="87371078663613140">瀏覽選單列中的選項</translation> +<translation id="8739706427581741437">新增 <ph name="NUMBER_OF_TABS_ADDED" /> 個分頁</translation> <translation id="8741627442233023406">{count,plural, =1{查看分頁…}other{查看所有分頁…}}</translation> <translation id="8741995161408053644">您的 Google 帳戶在 <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> 上可能有其他形式的瀏覽記錄。</translation> <translation id="874599634440689554">建立連結</translation>
diff --git a/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb b/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb index 97bfabf..cdf200a 100644 --- a/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb +++ b/ios/chrome/app/strings/resources/ios_strings_zh-TW.xtb
@@ -424,6 +424,7 @@ <translation id="2789552044937754463">{COUNT,plural, =1{密碼已儲存到 Google 帳戶 ({EMAIL})}other{密碼已儲存到 Google 帳戶 ({EMAIL})}}</translation> <translation id="2791174088547598693">新增密碼…</translation> <translation id="2797302972324086597">國家/地區代碼</translation> +<translation id="2802403747691280910">已關閉 <ph name="NUMBER_OF_TABS_REMOVED" /> 個分頁</translation> <translation id="2816489851009559785">「選單」→「設定」→「預設瀏覽器」</translation> <translation id="2818821771744632548">你已在重設 iPhone 時登出帳戶 (<ph name="USER_NAME" />),如要重新登入,請輕觸下方的「繼續」。</translation> <translation id="2819667972867209401">開啟時,資料會儲存到 Google 帳戶;關閉後,資料只會儲存到這部裝置,並在你登出後刪除。</translation> @@ -1574,6 +1575,7 @@ <translation id="7975036700432177008">試用</translation> <translation id="797588153137233716">「選單」→「歷史記錄」→「刪除瀏覽資料」</translation> <translation id="7977451675950311423">如果你使用的密碼因資料侵害事件而外洩,系統會顯示警告訊息。</translation> +<translation id="7977482887663636093">新增 <ph name="NUMBER_OF_TABS_ADDED" /> 個分頁,並關閉 <ph name="NUMBER_OF_TABS_REMOVED" /> 個分頁</translation> <translation id="797824194429476746">這些分頁會在這部裝置上保持開啟,但該群組會永久刪除。</translation> <translation id="7982789257301363584">網路</translation> <translation id="7987685713885608670">為進一步加強安全性,系統會先在裝置上將密碼加密,再儲存至 Google 密碼管理員。</translation> @@ -1757,6 +1759,7 @@ <translation id="8728922029615312208">全部關閉</translation> <translation id="8730621377337864115">完成</translation> <translation id="87371078663613140">瀏覽選單列中的選項</translation> +<translation id="8739706427581741437">新增 <ph name="NUMBER_OF_TABS_ADDED" /> 個分頁</translation> <translation id="8741627442233023406">{count,plural, =1{查看分頁…}other{查看所有分頁…}}</translation> <translation id="8741995161408053644">您仍可前往 <ph name="BEGIN_LINK" />history.google.com<ph name="END_LINK" /> 存取 Google 帳戶中保存的各種瀏覽記錄。</translation> <translation id="874599634440689554">建立連結</translation>
diff --git a/ios/chrome/browser/authentication/ui_bundled/account_menu/account_menu_coordinator.mm b/ios/chrome/browser/authentication/ui_bundled/account_menu/account_menu_coordinator.mm index f00d472b..d0badaf 100644 --- a/ios/chrome/browser/authentication/ui_bundled/account_menu/account_menu_coordinator.mm +++ b/ios/chrome/browser/authentication/ui_bundled/account_menu/account_menu_coordinator.mm
@@ -66,46 +66,25 @@ #import "ios/chrome/grit/ios_strings.h" #import "ui/base/l10n/l10n_util.h" +namespace { + // First part of a switch-account-after-switching-profile continuation: Sign out // the current account if it's different from the desired one. -@interface ChangeProfileSignOutIfMismatchContinuation - : NSObject <ChangeProfileContinuation> - -- (instancetype)initWithDesiredIdentity:(id<SystemIdentity>)identity; - -@end - -@implementation ChangeProfileSignOutIfMismatchContinuation { - id<SystemIdentity> _identity; -} - -- (instancetype)initWithDesiredIdentity:(id<SystemIdentity>)identity { - self = [super init]; - if (self) { - _identity = identity; - } - return self; -} - -#pragma mark - ChangeProfileContinuation - -- (void)executeWithSceneState:(SceneState*)sceneState - completion:(base::OnceClosure)completion { +void ChangeProfileSignOutIfMismatchContinuation( + id<SystemIdentity> expected_identity, + SceneState* scene_state, + base::OnceClosure closure) { Browser* browser = - sceneState.browserProviderInterface.mainBrowserProvider.browser; - AuthenticationService* authenticationService = + scene_state.browserProviderInterface.mainBrowserProvider.browser; + AuthenticationService* authentication_service = AuthenticationServiceFactory::GetForProfile(browser->GetProfile()); - if (!authenticationService->HasPrimaryIdentity( - signin::ConsentLevel::kSignin)) { - std::move(completion).Run(); - return; - } - id<SystemIdentity> existingIdentity = - authenticationService->GetPrimaryIdentity(signin::ConsentLevel::kSignin); - if (existingIdentity == _identity) { - // The correct account is already signed in in the new profile. - std::move(completion).Run(); + id<SystemIdentity> existing_identity = + authentication_service->GetPrimaryIdentity(signin::ConsentLevel::kSignin); + if (!existing_identity || existing_identity == expected_identity) { + // No need to sign-out as either the correct identity is signed-in or + // no identity is signed-in. + std::move(closure).Run(); return; } @@ -117,53 +96,32 @@ GetApplicationContext() ->GetAccountProfileMapper() ->GetPersonalProfileName()); - authenticationService->SignOut( + + authentication_service->SignOut( signin_metrics::ProfileSignout::kChangeAccountInAccountMenu, /*force_clear_browsing_data=*/false, - base::CallbackToBlock(std::move(completion))); + base::CallbackToBlock(std::move(closure))); } -@end - // Second part of a switch-account-after-switching-profile continuation: Sign in // the desired account if it's not already signed in. -@interface ChangeProfileSignInContinuation - : NSObject <ChangeProfileContinuation> - -- (instancetype)initWithDesiredIdentity:(id<SystemIdentity>)identity; - -@end - -@implementation ChangeProfileSignInContinuation { - id<SystemIdentity> _identity; -} - -- (instancetype)initWithDesiredIdentity:(id<SystemIdentity>)identity { - self = [super init]; - if (self) { - _identity = identity; - } - return self; -} - -#pragma mark - ChangeProfileContinuation - -- (void)executeWithSceneState:(SceneState*)sceneState - completion:(base::OnceClosure)completion { +void ChangeProfileSignInContinuation(id<SystemIdentity> identity, + SceneState* scene_state, + base::OnceClosure closure) { Browser* browser = - sceneState.browserProviderInterface.mainBrowserProvider.browser; + scene_state.browserProviderInterface.mainBrowserProvider.browser; // TODO(crbug.com/375604649): This should probably go through // AuthenticationFlow rather than using AuthenticationService directly, so // that the snackbar gets shown, and also the enterprise onboarding screen if // necessary. - AuthenticationService* authenticationService = + AuthenticationService* authentication_service = AuthenticationServiceFactory::GetForProfile(browser->GetProfile()); - authenticationService->SignIn( - _identity, signin_metrics::AccessPoint::ACCESS_POINT_ACCOUNT_MENU); - std::move(completion).Run(); + authentication_service->SignIn( + identity, signin_metrics::AccessPoint::ACCESS_POINT_ACCOUNT_MENU); + std::move(closure).Run(); } -@end +} // anonymous namespace @interface AccountMenuCoordinator () <AccountMenuMediatorDelegate, ManageAccountsCoordinatorDelegate, @@ -376,17 +334,13 @@ CHECK(AreSeparateProfilesForManagedAccountsEnabled()); SceneState* sceneState = self.browser->GetSceneState(); - ChangeProfileSignOutIfMismatchContinuation* signOutContinuation = - [[ChangeProfileSignOutIfMismatchContinuation alloc] - initWithDesiredIdentity:identity]; - ChangeProfileSignInContinuation* signInContinuation = - [[ChangeProfileSignInContinuation alloc] - initWithDesiredIdentity:identity]; + ChangeProfileContinuation continuation = ChainChangeProfileContinuations( + base::BindOnce(&ChangeProfileSignOutIfMismatchContinuation, identity), + base::BindOnce(&ChangeProfileSignInContinuation, identity)); - [_changeProfileHandler - changeProfile:profileName - forScene:sceneState - continuations:@[ signOutContinuation, signInContinuation ]]; + [_changeProfileHandler changeProfile:profileName + forScene:sceneState + continuation:std::move(continuation)]; } - (void)didTapAddAccountWithCompletion:
diff --git a/ios/chrome/browser/authentication/ui_bundled/authentication_flow/authentication_flow_performer.mm b/ios/chrome/browser/authentication/ui_bundled/authentication_flow/authentication_flow_performer.mm index 331e37f..dda72e46 100644 --- a/ios/chrome/browser/authentication/ui_bundled/authentication_flow/authentication_flow_performer.mm +++ b/ios/chrome/browser/authentication/ui_bundled/authentication_flow/authentication_flow_performer.mm
@@ -66,40 +66,19 @@ NSString* const kAuthenticationSnackbarCategory = @"AuthenticationSnackbarCategory"; +void AuthenticationFlowContinuation(OnProfileSwitchCompletion completion, + SceneState* scene_state, + base::OnceClosure closure) { + UIViewController* view_controller = scene_state.rootViewController; + Browser* new_browser = + scene_state.browserProviderInterface.currentBrowserProvider.browser; + + std::move(completion).Run(/*success=*/true, new_browser, view_controller); + std::move(closure).Run(); +} + } // namespace -@interface AuthenticationFlowContinuation : NSObject <ChangeProfileContinuation> - -- (instancetype)initWithCompletion:(OnProfileSwitchCompletion)completion - NS_DESIGNATED_INITIALIZER; - -- (instancetype)init NS_UNAVAILABLE; - -@end - -@implementation AuthenticationFlowContinuation { - OnProfileSwitchCompletion _completion; -} - -- (instancetype)initWithCompletion:(OnProfileSwitchCompletion)completion { - if ((self = [super init])) { - _completion = std::move(completion); - } - return self; -} - -- (void)executeWithSceneState:(SceneState*)sceneState - completion:(base::OnceClosure)completion { - UIViewController* viewController = sceneState.rootViewController; - Browser* newBrowser = - sceneState.browserProviderInterface.currentBrowserProvider.browser; - - std::move(_completion).Run(/*success=*/true, newBrowser, viewController); - std::move(completion).Run(); -} - -@end - @interface AuthenticationFlowPerformer () < ManagedProfileCreationCoordinatorDelegate> @end @@ -186,13 +165,11 @@ return; } - AuthenticationFlowContinuation* continuation = - [[AuthenticationFlowContinuation alloc] - initWithCompletion:std::move(completion)]; - - [_changeProfileHandler changeProfile:*profileName - forScene:sceneState - continuations:@[ continuation ]]; + [_changeProfileHandler + changeProfile:*profileName + forScene:sceneState + continuation:base::BindOnce(&AuthenticationFlowContinuation, + std::move(completion))]; } - (void)makePersonalProfileManagedWithIdentity:(id<SystemIdentity>)identity {
diff --git a/ios/chrome/browser/authentication/ui_bundled/change_profile/change_profile_recent_tabs_continuation.h b/ios/chrome/browser/authentication/ui_bundled/change_profile/change_profile_recent_tabs_continuation.h index 91a21ba9..bed0a27c 100644 --- a/ios/chrome/browser/authentication/ui_bundled/change_profile/change_profile_recent_tabs_continuation.h +++ b/ios/chrome/browser/authentication/ui_bundled/change_profile/change_profile_recent_tabs_continuation.h
@@ -5,13 +5,9 @@ #ifndef IOS_CHROME_BROWSER_AUTHENTICATION_UI_BUNDLED_CHANGE_PROFILE_CHANGE_PROFILE_RECENT_TABS_CONTINUATION_H_ #define IOS_CHROME_BROWSER_AUTHENTICATION_UI_BUNDLED_CHANGE_PROFILE_CHANGE_PROFILE_RECENT_TABS_CONTINUATION_H_ -#import <UIKit/UIKit.h> - #import "ios/chrome/app/change_profile_continuation.h" -@interface ChangeProfileRecentTabsContinuation - : NSObject <ChangeProfileContinuation> - -@end +// Returns a ChangeProfileContinuation that opens the recent tabs view. +ChangeProfileContinuation CreateChangeProfileRecentTabsContinuation(); #endif // IOS_CHROME_BROWSER_AUTHENTICATION_UI_BUNDLED_CHANGE_PROFILE_CHANGE_PROFILE_RECENT_TABS_CONTINUATION_H_
diff --git a/ios/chrome/browser/authentication/ui_bundled/change_profile/change_profile_recent_tabs_continuation.mm b/ios/chrome/browser/authentication/ui_bundled/change_profile/change_profile_recent_tabs_continuation.mm index dbb50ae9..e8627ef 100644 --- a/ios/chrome/browser/authentication/ui_bundled/change_profile/change_profile_recent_tabs_continuation.mm +++ b/ios/chrome/browser/authentication/ui_bundled/change_profile/change_profile_recent_tabs_continuation.mm
@@ -12,21 +12,24 @@ #import "ios/chrome/browser/shared/public/commands/browser_coordinator_commands.h" #import "ios/chrome/browser/shared/public/commands/command_dispatcher.h" -@implementation ChangeProfileRecentTabsContinuation +namespace { -#pragma mark - ChangeProfileContinuation - -- (void)executeWithSceneState:(SceneState*)sceneState - completion:(base::OnceClosure)completion { +// Implementation of the continuation opening the recent tabs view. +void ChangeProfileRecentTabsContinuation(SceneState* scene_state, + base::OnceClosure closure) { Browser* browser = - sceneState.browserProviderInterface.mainBrowserProvider.browser; + scene_state.browserProviderInterface.mainBrowserProvider.browser; CHECK(browser); id<BrowserCoordinatorCommands> browserCoordinatorHandler = HandlerForProtocol( browser->GetCommandDispatcher(), BrowserCoordinatorCommands); [browserCoordinatorHandler showRecentTabs]; - std::move(completion).Run(); + std::move(closure).Run(); } -@end +} // namespace + +ChangeProfileContinuation CreateChangeProfileRecentTabsContinuation() { + return base::BindOnce(&ChangeProfileRecentTabsContinuation); +}
diff --git a/ios/chrome/browser/authentication/ui_bundled/change_profile/change_profile_signout_continuation.h b/ios/chrome/browser/authentication/ui_bundled/change_profile/change_profile_signout_continuation.h index 2245659..96cccc2 100644 --- a/ios/chrome/browser/authentication/ui_bundled/change_profile/change_profile_signout_continuation.h +++ b/ios/chrome/browser/authentication/ui_bundled/change_profile/change_profile_signout_continuation.h
@@ -16,16 +16,13 @@ enum class ProfileSignout; } // namespace signin_metrics -@interface ChangeProfileSignoutContinuation - : NSObject <ChangeProfileContinuation> - -- (instancetype)initWithSignoutSourceMetric: - (signin_metrics::ProfileSignout)signoutSourceMetric - forceClearData:(BOOL)forceClearData - forceSnackbarOverToolbar:(BOOL)forceSnackbarOverToolbar - snackbarMessage:(MDCSnackbarMessage*)snackbarMessage - signoutCompletion:(ProceduralBlock)signoutCompletion; - -@end +// Returns a ChangeProfileContinuation that sign-out the profile, presents +// a snackbar, and then runs `signout_completion`. +ChangeProfileContinuation CreateChangeProfileSignoutContinuation( + signin_metrics::ProfileSignout signout_source_metric, + BOOL force_clear_data, + BOOL force_snackbar_over_toolbar, + MDCSnackbarMessage* snackbar_message, + ProceduralBlock signout_completion); #endif // IOS_CHROME_BROWSER_AUTHENTICATION_UI_BUNDLED_CHANGE_PROFILE_CHANGE_PROFILE_SIGNOUT_CONTINUATION_H_
diff --git a/ios/chrome/browser/authentication/ui_bundled/change_profile/change_profile_signout_continuation.mm b/ios/chrome/browser/authentication/ui_bundled/change_profile/change_profile_signout_continuation.mm index 123bd8ebd..d3a24b4 100644 --- a/ios/chrome/browser/authentication/ui_bundled/change_profile/change_profile_signout_continuation.mm +++ b/ios/chrome/browser/authentication/ui_bundled/change_profile/change_profile_signout_continuation.mm
@@ -37,62 +37,48 @@ } } -} // namespace - -@implementation ChangeProfileSignoutContinuation { - signin_metrics::ProfileSignout _signoutSourceMetric; - BOOL _forceClearData; - BOOL _forceSnackbarOverToolbar; - MDCSnackbarMessage* _snackbarMessage; - ProceduralBlock _signoutCompletion; -} - -- (instancetype)initWithSignoutSourceMetric: - (signin_metrics::ProfileSignout)signoutSourceMetric - forceClearData:(BOOL)forceClearData - forceSnackbarOverToolbar:(BOOL)forceSnackbarOverToolbar - snackbarMessage:(MDCSnackbarMessage*)snackbarMessage - signoutCompletion:(ProceduralBlock)signoutCompletion { - self = [super init]; - if (self) { - _signoutSourceMetric = signoutSourceMetric; - _forceClearData = forceClearData; - _forceSnackbarOverToolbar = forceSnackbarOverToolbar; - _snackbarMessage = snackbarMessage; - _signoutCompletion = signoutCompletion; - } - return self; -} - -#pragma mark - ChangeProfileContinuation - -- (void)executeWithSceneState:(SceneState*)sceneState - completion:(base::OnceClosure)completion { +// Implementation of the continuation that sign-out the profile. +void ChangeProfileSignoutContinuation( + signin_metrics::ProfileSignout signout_source_metric, + BOOL force_clear_data, + BOOL force_snackbar_over_toolbar, + MDCSnackbarMessage* snackbar_message, + base::OnceClosure signout_completion, + SceneState* scene_state, + base::OnceClosure closure) { Browser* browser = - sceneState.browserProviderInterface.currentBrowserProvider.browser; + scene_state.browserProviderInterface.currentBrowserProvider.browser; CHECK(browser); // Create the closure corresponding to the action to perform once the signout - // action completes, chaining `_signoutCompletion` and `completion` if needed. - base::OnceClosure closure = + // action completes, chaining `signout_completion` and `closure`. + base::OnceClosure completion = base::BindOnce(&SignoutDone, browser->AsWeakPtr(), - _forceSnackbarOverToolbar, _snackbarMessage); + force_snackbar_over_toolbar, snackbar_message) + .Then(std::move(signout_completion)) + .Then(std::move(closure)); - if (_signoutCompletion) { - closure = std::move(closure).Then(base::BindOnce(_signoutCompletion)); - } - if (completion) { - closure = std::move(closure).Then(std::move(completion)); - } - - AuthenticationService* authenticationService = + AuthenticationService* authentication_service = AuthenticationServiceFactory::GetForProfile(browser->GetProfile()); - authenticationService->SignOut(_signoutSourceMetric, _forceClearData, - base::CallbackToBlock(std::move(closure))); + authentication_service->SignOut(signout_source_metric, force_clear_data, + base::CallbackToBlock(std::move(completion))); - signin_metrics::RecordSignoutForceClearDataChoice(_forceClearData); - signin_metrics::RecordSignoutUserAction(_forceClearData); + signin_metrics::RecordSignoutForceClearDataChoice(force_clear_data); + signin_metrics::RecordSignoutUserAction(force_clear_data); } -@end +} // namespace + +ChangeProfileContinuation CreateChangeProfileSignoutContinuation( + signin_metrics::ProfileSignout signout_source_metric, + BOOL force_clear_data, + BOOL force_snackbar_over_toolbar, + MDCSnackbarMessage* snackbar_message, + ProceduralBlock signout_completion) { + return base::BindOnce(&ChangeProfileSignoutContinuation, + signout_source_metric, force_clear_data, + force_snackbar_over_toolbar, snackbar_message, + signout_completion ? base::BindOnce(signout_completion) + : base::DoNothing()); +}
diff --git a/ios/chrome/browser/authentication/ui_bundled/signin/signin_utils.mm b/ios/chrome/browser/authentication/ui_bundled/signin/signin_utils.mm index 722acf2..159eb41 100644 --- a/ios/chrome/browser/authentication/ui_bundled/signin/signin_utils.mm +++ b/ios/chrome/browser/authentication/ui_bundled/signin/signin_utils.mm
@@ -372,14 +372,6 @@ AuthenticationService* authentication_service = AuthenticationServiceFactory::GetForProfile(browser->GetProfile()); - ChangeProfileSignoutContinuation* signout_continuation = - [[ChangeProfileSignoutContinuation alloc] - initWithSignoutSourceMetric:signout_source - forceClearData:force_clear_data - forceSnackbarOverToolbar:force_snackbar_over_toolbar - snackbarMessage:snackbar_message - signoutCompletion:signout_completion]; - BOOL should_switch_profile_at_signout = AreSeparateProfilesForManagedAccountsEnabled() && authentication_service->HasPrimaryIdentityManaged( @@ -387,9 +379,13 @@ SceneState* scene_state = browser->GetSceneState(); + ChangeProfileContinuation continuation = + CreateChangeProfileSignoutContinuation( + signout_source, force_clear_data, force_snackbar_over_toolbar, + snackbar_message, signout_completion); + if (!should_switch_profile_at_signout) { - [signout_continuation executeWithSceneState:scene_state - completion:base::DoNothing()]; + std::move(continuation).Run(scene_state, base::DoNothing()); return; } @@ -407,7 +403,7 @@ [change_profile_handler changeProfile:default_profile_name forScene:scene_state - continuations:@[ signout_continuation ]]; + continuation:std::move(continuation)]; } } // namespace signin
diff --git a/ios/chrome/browser/autofill/ui_bundled/address_editor/autofill_profile_edit_mediator.mm b/ios/chrome/browser/autofill/ui_bundled/address_editor/autofill_profile_edit_mediator.mm index 542ea9f..3a45bb4 100644 --- a/ios/chrome/browser/autofill/ui_bundled/address_editor/autofill_profile_edit_mediator.mm +++ b/ios/chrome/browser/autofill/ui_bundled/address_editor/autofill_profile_edit_mediator.mm
@@ -341,7 +341,7 @@ // Loads the country codes and names and sets the default selected country code. - (void)loadCountries { autofill::CountryComboboxModel countryModel; - countryModel.SetCountries(*_personalDataManager, + countryModel.SetCountries(_personalDataManager->address_data_manager(), base::RepeatingCallback<bool(const std::string&)>(), GetApplicationContext()->GetApplicationLocale()); const autofill::CountryComboboxModel::CountryVector& countriesVector =
diff --git a/ios/chrome/browser/autofill/ui_bundled/address_editor/autofill_profile_edit_mediator_unittest.mm b/ios/chrome/browser/autofill/ui_bundled/address_editor/autofill_profile_edit_mediator_unittest.mm index f68420d6..c9586f5 100644 --- a/ios/chrome/browser/autofill/ui_bundled/address_editor/autofill_profile_edit_mediator_unittest.mm +++ b/ios/chrome/browser/autofill/ui_bundled/address_editor/autofill_profile_edit_mediator_unittest.mm
@@ -129,7 +129,7 @@ const autofill::CountryComboboxModel::CountryVector& CountriesList() { country_model_.SetCountries( - *personal_data_manager(), + personal_data_manager()->address_data_manager(), base::RepeatingCallback<bool(const std::string&)>(), GetApplicationContext()->GetApplicationLocale()); return country_model_.countries();
diff --git a/ios/chrome/browser/browser_view/ui_bundled/browser_view_controller.mm b/ios/chrome/browser/browser_view/ui_bundled/browser_view_controller.mm index 885774c..77ad1ecae 100644 --- a/ios/chrome/browser/browser_view/ui_bundled/browser_view_controller.mm +++ b/ios/chrome/browser/browser_view/ui_bundled/browser_view_controller.mm
@@ -2514,6 +2514,10 @@ // helper #pragma mark - SideSwipeMediatorDelegate +- (UIView*)sideSwipeFullscreenView { + return self.view; +} + - (void)sideSwipeViewDismissAnimationDidEnd:(UIView*)sideSwipeView { DCHECK(!IsRegularXRegularSizeClass(self)); // TODO(crbug.com/40842406): Signal to the toolbar coordinator to perform this
diff --git a/ios/chrome/browser/lens_overlay/model/lens_overlay_tab_helper.h b/ios/chrome/browser/lens_overlay/model/lens_overlay_tab_helper.h index 3466065..1e63726 100644 --- a/ios/chrome/browser/lens_overlay/model/lens_overlay_tab_helper.h +++ b/ios/chrome/browser/lens_overlay/model/lens_overlay_tab_helper.h
@@ -51,8 +51,9 @@ return is_updating_tab_switcher_snapshot_; } - // Returns YES if the lens overlay is invoked on a given navigation item. - bool IsLensOverlayInvokedOnItem(web::NavigationItem* navigation_item); + // Returns true if the most recent back navigation item has lens overlay + // invoked. + bool IsLensOverlayInvokedOnMostRecentBackItem(); // Get the recorded bottom sheet detent state associate with this tab helper. SheetDimensionState GetRecordedSheetDimensionState() {
diff --git a/ios/chrome/browser/lens_overlay/model/lens_overlay_tab_helper.mm b/ios/chrome/browser/lens_overlay/model/lens_overlay_tab_helper.mm index 393c9c20..bffd949d 100644 --- a/ios/chrome/browser/lens_overlay/model/lens_overlay_tab_helper.mm +++ b/ios/chrome/browser/lens_overlay/model/lens_overlay_tab_helper.mm
@@ -47,10 +47,11 @@ } } -bool LensOverlayTabHelper::IsLensOverlayInvokedOnItem( - web::NavigationItem* navigation_item) { - return is_ui_attached_and_alive_ && - invokation_navigation_id_ == navigation_item->GetUniqueID(); +bool LensOverlayTabHelper::IsLensOverlayInvokedOnMostRecentBackItem() { + std::vector<web::NavigationItem*> backItems = + web_state_->GetNavigationManager()->GetBackwardItems(); + return is_ui_attached_and_alive_ && backItems.size() > 0 && + invokation_navigation_id_ == backItems[0]->GetUniqueID(); } #pragma mark - WebStateObserver @@ -90,9 +91,14 @@ CHECK_EQ(web_state, web_state_, kLensOverlayNotFatalUntil); if (IsLensOverlaySameTabNavigationEnabled()) { - if (IsLensOverlayInvokedOnItem( - web_state->GetNavigationManager()->GetVisibleItem())) { - [commands_handler_ showLensUI:YES]; + if (web_state_->GetNavigationManager()) { + web::NavigationItem* visibleItem = + web_state_->GetNavigationManager()->GetVisibleItem(); + + if (is_ui_attached_and_alive_ && visibleItem && + invokation_navigation_id_ == visibleItem->GetUniqueID()) { + [commands_handler_ showLensUI:YES]; + } } } else if (is_ui_attached_and_alive_) { [commands_handler_ showLensUI:YES];
diff --git a/ios/chrome/browser/ntp/ui_bundled/new_tab_page_coordinator.mm b/ios/chrome/browser/ntp/ui_bundled/new_tab_page_coordinator.mm index f7800560..ce60a75 100644 --- a/ios/chrome/browser/ntp/ui_bundled/new_tab_page_coordinator.mm +++ b/ios/chrome/browser/ntp/ui_bundled/new_tab_page_coordinator.mm
@@ -382,7 +382,7 @@ [self configureContentSuggestionsCoordinator]; [self configureFeedMetricsRecorder]; [self configureNTPViewController]; - if (IsTabGroupIndicatorEnabled()) { + if (IsTabGroupInGridEnabled()) { [self configureTabGroupIndicator]; } @@ -410,10 +410,8 @@ [sceneState.profileState removeObserver:self]; - if (IsTabGroupIndicatorEnabled()) { - [_tabGroupIndicatorCoordinator stop]; - _tabGroupIndicatorCoordinator = nil; - } + [_tabGroupIndicatorCoordinator stop]; + _tabGroupIndicatorCoordinator = nil; [self.feedManagementCoordinator stop]; self.feedManagementCoordinator = nil;
diff --git a/ios/chrome/browser/ntp/ui_bundled/new_tab_page_coordinator_unittest.mm b/ios/chrome/browser/ntp/ui_bundled/new_tab_page_coordinator_unittest.mm index 1f04412..a4374308 100644 --- a/ios/chrome/browser/ntp/ui_bundled/new_tab_page_coordinator_unittest.mm +++ b/ios/chrome/browser/ntp/ui_bundled/new_tab_page_coordinator_unittest.mm
@@ -39,6 +39,7 @@ #import "ios/chrome/browser/shared/model/profile/test/test_profile_manager_ios.h" #import "ios/chrome/browser/shared/model/web_state_list/web_state_list.h" #import "ios/chrome/browser/shared/model/web_state_list/web_state_opener.h" +#import "ios/chrome/browser/shared/public/commands/application_commands.h" #import "ios/chrome/browser/shared/public/commands/command_dispatcher.h" #import "ios/chrome/browser/shared/public/commands/help_commands.h" #import "ios/chrome/browser/shared/public/commands/omnibox_commands.h" @@ -310,24 +311,29 @@ } void SetupCommandHandlerMocks() { - help_commands_handler_mock = OCMProtocolMock(@protocol(HelpCommands)); - omnibox_commands_handler_mock = OCMProtocolMock(@protocol(OmniboxCommands)); - snackbar_commands_handler_mock = + application_handler_mock_ = OCMProtocolMock(@protocol(ApplicationCommands)); + help_commands_handler_mock_ = OCMProtocolMock(@protocol(HelpCommands)); + omnibox_commands_handler_mock_ = + OCMProtocolMock(@protocol(OmniboxCommands)); + snackbar_commands_handler_mock_ = OCMProtocolMock(@protocol(SnackbarCommands)); - fakebox_focuser_handler_mock = OCMProtocolMock(@protocol(FakeboxFocuser)); + fakebox_focuser_handler_mock_ = OCMProtocolMock(@protocol(FakeboxFocuser)); parcel_tracking_commands_handler_mock_ = OCMProtocolMock(@protocol(ParcelTrackingOptInCommands)); [browser_.get()->GetCommandDispatcher() - startDispatchingToTarget:help_commands_handler_mock + startDispatchingToTarget:application_handler_mock_ + forProtocol:@protocol(ApplicationCommands)]; + [browser_.get()->GetCommandDispatcher() + startDispatchingToTarget:help_commands_handler_mock_ forProtocol:@protocol(HelpCommands)]; [browser_.get()->GetCommandDispatcher() - startDispatchingToTarget:omnibox_commands_handler_mock + startDispatchingToTarget:omnibox_commands_handler_mock_ forProtocol:@protocol(OmniboxCommands)]; [browser_.get()->GetCommandDispatcher() - startDispatchingToTarget:snackbar_commands_handler_mock + startDispatchingToTarget:snackbar_commands_handler_mock_ forProtocol:@protocol(SnackbarCommands)]; [browser_.get()->GetCommandDispatcher() - startDispatchingToTarget:fakebox_focuser_handler_mock + startDispatchingToTarget:fakebox_focuser_handler_mock_ forProtocol:@protocol(FakeboxFocuser)]; [browser_.get()->GetCommandDispatcher() startDispatchingToTarget:parcel_tracking_commands_handler_mock_ @@ -392,10 +398,11 @@ NewTabPageMetricsRecorder* NTPMetricsRecorder_; id component_factory_mock_; UIViewController* base_view_controller_; - id help_commands_handler_mock; - id omnibox_commands_handler_mock; - id snackbar_commands_handler_mock; - id fakebox_focuser_handler_mock; + id application_handler_mock_; + id help_commands_handler_mock_; + id omnibox_commands_handler_mock_; + id snackbar_commands_handler_mock_; + id fakebox_focuser_handler_mock_; id parcel_tracking_commands_handler_mock_; std::unique_ptr<base::HistogramTester> histogram_tester_; base::test::ScopedFeatureList scoped_feature_list_;
diff --git a/ios/chrome/browser/ntp/ui_bundled/new_tab_page_header_view.mm b/ios/chrome/browser/ntp/ui_bundled/new_tab_page_header_view.mm index bca3bab..3c2891b 100644 --- a/ios/chrome/browser/ntp/ui_bundled/new_tab_page_header_view.mm +++ b/ios/chrome/browser/ntp/ui_bundled/new_tab_page_header_view.mm
@@ -487,7 +487,7 @@ content_suggestions::SearchFieldWidth(contentWidth, self.traitCollection); CGFloat percent = [self searchFieldProgressForOffset:offset]; - if (IsTabGroupIndicatorEnabled()) { + if (IsTabGroupInGridEnabled()) { [self updateTabGroupIndicatorAvailabilityWithOffset:offset]; } @@ -696,8 +696,7 @@ } - (void)updateTabGroupIndicatorAvailabilityWithOffset:(CGFloat)offset { - CHECK(IsTabGroupIndicatorEnabled()); - + CHECK(IsTabGroupInGridEnabled()); BOOL canShowTabStrip = IsRegularXRegularSizeClass(self); BOOL isAvailable = !IsCompactHeight(self) && !canShowTabStrip; _tabGroupIndicatorView.available = isAvailable; @@ -763,7 +762,7 @@ // Sets tabgroupIndicatorView. - (void)setTabGroupIndicatorView:(TabGroupIndicatorView*)view { - CHECK(IsTabGroupIndicatorEnabled()); + CHECK(IsTabGroupInGridEnabled()); _tabGroupIndicatorView = view; _tabGroupIndicatorView.hidden = YES; _tabGroupIndicatorView.translatesAutoresizingMaskIntoConstraints = NO;
diff --git a/ios/chrome/browser/ntp/ui_bundled/new_tab_page_header_view_controller.mm b/ios/chrome/browser/ntp/ui_bundled/new_tab_page_header_view_controller.mm index d09b49c..438a494 100644 --- a/ios/chrome/browser/ntp/ui_bundled/new_tab_page_header_view_controller.mm +++ b/ios/chrome/browser/ntp/ui_bundled/new_tab_page_header_view_controller.mm
@@ -220,7 +220,7 @@ safeAreaInsets:(UIEdgeInsets)safeAreaInsets animateScrollAnimation:(BOOL)animateScrollAnimation { if (self.isShowing) { - if (IsTabGroupIndicatorEnabled()) { + if (IsTabGroupInGridEnabled()) { [self.headerView updateTabGroupIndicatorAvailabilityWithOffset:offset]; } CGFloat progress =
diff --git a/ios/chrome/browser/shared/coordinator/scene/scene_controller.mm b/ios/chrome/browser/shared/coordinator/scene/scene_controller.mm index 7adef2f1..c24c53a2 100644 --- a/ios/chrome/browser/shared/coordinator/scene/scene_controller.mm +++ b/ios/chrome/browser/shared/coordinator/scene/scene_controller.mm
@@ -493,11 +493,12 @@ - (void)setProfileState:(ProfileState*)profileState { DCHECK(!_sceneState.profileState); + // Connect the ProfileState with the SceneState. _sceneState.profileState = profileState; [profileState sceneStateConnected:_sceneState]; - [profileState addObserver:self]; - // Add agents. + // Add agents. They may depend on the ProfileState, so they need to be + // created after it has been connected to the SceneState. [_sceneState addAgent:[[UIBlockerSceneAgent alloc] init]]; [_sceneState addAgent:[[IncognitoBlockerSceneAgent alloc] init]]; [_sceneState @@ -506,6 +507,10 @@ [_sceneState addAgent:[[StartSurfaceSceneAgent alloc] init]]; [_sceneState addAgent:[[SessionSavingSceneAgent alloc] init]]; [_sceneState addAgent:[[LayoutGuideSceneAgent alloc] init]]; + + // Start observing the ProfileState. This needs to happen after the agents + // as this may result in creation of the UI which can access to the agents. + [profileState addObserver:self]; } #pragma mark - Setters and getters
diff --git a/ios/chrome/browser/side_swipe/ui_bundled/BUILD.gn b/ios/chrome/browser/side_swipe/ui_bundled/BUILD.gn index 725bcc1..1bcfbda 100644 --- a/ios/chrome/browser/side_swipe/ui_bundled/BUILD.gn +++ b/ios/chrome/browser/side_swipe/ui_bundled/BUILD.gn
@@ -6,11 +6,14 @@ sources = [ "card_side_swipe_view.h", "card_side_swipe_view.mm", + "horizontal_pan_gesture_handler.h", "side_swipe_mediator+Testing.h", "side_swipe_mediator.h", "side_swipe_mediator.mm", "side_swipe_navigation_view.h", "side_swipe_navigation_view.mm", + "side_swipe_snapshot_navigation_view.h", + "side_swipe_snapshot_navigation_view.mm", "side_swipe_util.h", "side_swipe_util.mm", "swipe_view.h",
diff --git a/ios/chrome/browser/side_swipe/ui_bundled/horizontal_pan_gesture_handler.h b/ios/chrome/browser/side_swipe/ui_bundled/horizontal_pan_gesture_handler.h new file mode 100644 index 0000000..58999ed --- /dev/null +++ b/ios/chrome/browser/side_swipe/ui_bundled/horizontal_pan_gesture_handler.h
@@ -0,0 +1,30 @@ +// Copyright 2025 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_SIDE_SWIPE_UI_BUNDLED_HORIZONTAL_PAN_GESTURE_HANDLER_H_ +#define IOS_CHROME_BROWSER_SIDE_SWIPE_UI_BUNDLED_HORIZONTAL_PAN_GESTURE_HANDLER_H_ + +@class SideSwipeGestureRecognizer; + +// Animates the target view in response to given side swipe gesture recognizers. +@protocol HorizontalPanGestureHandler <NSObject> + +// UIView that is animated in response to side swipe gestures. +@property(nonatomic, weak) UIView* targetView; + +// Update views for latest gesture, and call completion blocks whether +// `threshold` is met. +- (void)handleHorizontalPan:(SideSwipeGestureRecognizer*)gesture + onOverThresholdCompletion:(void (^)(void))onOverThresholdCompletion + onUnderThresholdCompletion:(void (^)(void))onUnderThresholdCompletion; + +// Performs an animation on the view that simulates a swipe in `direction` and +// call `completion` when the animation completes. +- (void)animateHorizontalPanWithDirection: + (UISwipeGestureRecognizerDirection)direction + completionHandler:(void (^)(void))completion; + +@end + +#endif // IOS_CHROME_BROWSER_SIDE_SWIPE_UI_BUNDLED_HORIZONTAL_PAN_GESTURE_HANDLER_H_
diff --git a/ios/chrome/browser/side_swipe/ui_bundled/side_swipe_mediator.h b/ios/chrome/browser/side_swipe/ui_bundled/side_swipe_mediator.h index cb76673..05f4be8 100644 --- a/ios/chrome/browser/side_swipe/ui_bundled/side_swipe_mediator.h +++ b/ios/chrome/browser/side_swipe/ui_bundled/side_swipe_mediator.h
@@ -30,8 +30,20 @@ @required // Called when the horizontal stack view is done and should be removed. - (void)sideSwipeViewDismissAnimationDidEnd:(UIView*)sideSwipeView; -// Returns the main content view. + +// View that will be animated alongside the swipe by setting its frame. +// +// If the animation is contained within the browser's content area, +// use sideSwipeContentView for the swipe animation. +// +// If the animation includes browser chrome elements (e.g., toolbars), +// use sideSwipeFullscreenView for the swipe animation. +// +// Example: Swiping between the Lens overlay UI and a normal web page +// requires sideSwipeFullscreenView because the toolbars are involved. - (UIView*)sideSwipeContentView; +- (UIView*)sideSwipeFullscreenView; + // Makes `tab` the currently visible tab, displaying its view. - (void)sideSwipeRedisplayTabView; // Controls the visibility of views such as the findbar, infobar and voice
diff --git a/ios/chrome/browser/side_swipe/ui_bundled/side_swipe_mediator.mm b/ios/chrome/browser/side_swipe/ui_bundled/side_swipe_mediator.mm index 7eb06d2..ae99419 100644 --- a/ios/chrome/browser/side_swipe/ui_bundled/side_swipe_mediator.mm +++ b/ios/chrome/browser/side_swipe/ui_bundled/side_swipe_mediator.mm
@@ -27,6 +27,7 @@ #import "ios/chrome/browser/side_swipe/ui_bundled/side_swipe_gesture_recognizer.h" #import "ios/chrome/browser/side_swipe/ui_bundled/side_swipe_mediator+Testing.h" #import "ios/chrome/browser/side_swipe/ui_bundled/side_swipe_navigation_view.h" +#import "ios/chrome/browser/side_swipe/ui_bundled/side_swipe_snapshot_navigation_view.h" #import "ios/chrome/browser/side_swipe/ui_bundled/side_swipe_util.h" #import "ios/chrome/browser/snapshots/model/snapshot_tab_helper.h" #import "ios/chrome/browser/tabs/ui_bundled/requirements/tab_strip_highlighting.h" @@ -64,7 +65,7 @@ CardSideSwipeView* _tabSideSwipeView; // Side swipe view for page navigation. - SideSwipeNavigationView* _pageSideSwipeView; + UIView<HorizontalPanGestureHandler>* _pageSideSwipeView; // YES if the user is currently swiping. BOOL _inSwipe; @@ -377,15 +378,22 @@ CGRectGetWidth(gestureBounds), CGRectGetHeight(gestureBounds) - headerHeight); - _pageSideSwipeView = [[SideSwipeNavigationView alloc] - initWithFrame:navigationFrame - withDirection:gesture.direction - canNavigate:[self canNavigate:goBack] - image:[UIImage imageNamed:@"side_swipe_navigation_back"]]; - [_pageSideSwipeView setTargetView:[_swipeDelegate sideSwipeContentView]]; - - [gesture.view insertSubview:_pageSideSwipeView - belowSubview:[_swipeDelegate topToolbarView]]; + if ([self swipingFullScreenContent:gesture.direction]) { + _pageSideSwipeView = + [self fullscreenSnapshotSideSwipeView:gesture.direction]; + UIView* fullscreenView = [_swipeDelegate sideSwipeFullscreenView]; + [_pageSideSwipeView setTargetView:fullscreenView]; + [fullscreenView.superview insertSubview:_pageSideSwipeView + belowSubview:fullscreenView]; + } else { + _pageSideSwipeView = + [self webContentSideSwipeView:navigationFrame + direction:gesture.direction + canNavigate:[self canNavigate:goBack]]; + [_pageSideSwipeView setTargetView:[_swipeDelegate sideSwipeContentView]]; + [gesture.view insertSubview:_pageSideSwipeView + belowSubview:[_swipeDelegate topToolbarView]]; + } } else if (gesture.state == UIGestureRecognizerStateCancelled || gesture.state == UIGestureRecognizerStateEnded || gesture.state == UIGestureRecognizerStateFailed) { @@ -420,15 +428,21 @@ CGRectGetHeight(navigatingBounds) - headerHeight); BOOL canNavigate = [self canNavigate:IsSwipingBack(direction)]; - _pageSideSwipeView = [[SideSwipeNavigationView alloc] - initWithFrame:navigationFrame - withDirection:direction - canNavigate:canNavigate - image:[UIImage imageNamed:@"side_swipe_navigation_back"]]; - [_pageSideSwipeView setTargetView:[_swipeDelegate sideSwipeContentView]]; - [navigatingView insertSubview:_pageSideSwipeView - belowSubview:[_swipeDelegate topToolbarView]]; + if ([self swipingFullScreenContent:direction]) { + _pageSideSwipeView = [self fullscreenSnapshotSideSwipeView:direction]; + UIView* fullscreenView = [_swipeDelegate sideSwipeFullscreenView]; + [_pageSideSwipeView setTargetView:fullscreenView]; + [fullscreenView.superview insertSubview:_pageSideSwipeView + belowSubview:fullscreenView]; + } else { + _pageSideSwipeView = [self webContentSideSwipeView:navigationFrame + direction:direction + canNavigate:canNavigate]; + [_pageSideSwipeView setTargetView:[_swipeDelegate sideSwipeContentView]]; + [navigatingView insertSubview:_pageSideSwipeView + belowSubview:[_swipeDelegate topToolbarView]]; + } __weak SideSwipeMediator* weakSelf = self; [_pageSideSwipeView @@ -588,19 +602,20 @@ self.trailingEdgeNavigationEnabled = YES; } - // If the previous page is an NTP, enable leading edge swipe. - std::vector<web::NavigationItem*> backItems = - webState->GetNavigationManager()->GetBackwardItems(); - if (IsLensOverlayAvailable()) { LensOverlayTabHelper* lensOverlayTabHelper = LensOverlayTabHelper::FromWebState(webState); - if (backItems.size() > 0 && - lensOverlayTabHelper->IsLensOverlayInvokedOnItem(backItems[0])) { + // if the previous page has lens overlay invoked, enable leading edge swipe. + if (lensOverlayTabHelper && + lensOverlayTabHelper->IsLensOverlayInvokedOnMostRecentBackItem()) { self.leadingEdgeNavigationEnabled = YES; } } + // If the previous page is an NTP, enable leading edge swipe. + std::vector<web::NavigationItem*> backItems = + webState->GetNavigationManager()->GetBackwardItems(); + if (backItems.size() > 0 && UseNativeSwipe(backItems[0])) { self.leadingEdgeNavigationEnabled = YES; } @@ -748,4 +763,55 @@ [self updateNavigationEdgeSwipeForWebState:status.new_active_web_state]; } +#pragma mark - private + +// Creates and returns a view, showing a navigation arrow covering the web +// content area. +- (SideSwipeNavigationView*) + webContentSideSwipeView:(CGRect)frame + direction:(UISwipeGestureRecognizerDirection)direction + canNavigate:(BOOL)canNavigate { + return [[SideSwipeNavigationView alloc] + initWithFrame:frame + withDirection:direction + canNavigate:canNavigate + image:[UIImage imageNamed:@"side_swipe_navigation_back"]]; +} + +// Returns YES, if the the whole page should be swiped. +- (BOOL)swipingFullScreenContent:(UISwipeGestureRecognizerDirection)direction { + return [self swipingBackToLensOverlay:direction]; +} + +// Returns YES, if the the side swipe leads to navigating back to lens +// overlay. +- (BOOL)swipingBackToLensOverlay:(UISwipeGestureRecognizerDirection)direction { + if (!IsLensOverlaySameTabNavigationEnabled()) { + return NO; + } + + LensOverlayTabHelper* lensOverlayTabHelper = + LensOverlayTabHelper::FromWebState(self.activeWebState); + + BOOL isSwipingBackToLensOverlay = + IsSwipingBack(direction) && lensOverlayTabHelper && + lensOverlayTabHelper->IsLensOverlayInvokedOnMostRecentBackItem(); + + return isSwipingBackToLensOverlay; +} + +// Creates and returns a view, showing a fullscreen snapshot of the lens +// overlay. +- (SideSwipeSnapshotNavigationView*)fullscreenSnapshotSideSwipeView: + (UISwipeGestureRecognizerDirection)direction { + DCHECK([self swipingFullScreenContent:direction]); + + LensOverlayTabHelper* lensOverlayTabHelper = + LensOverlayTabHelper::FromWebState(self.activeWebState); + + return [[SideSwipeSnapshotNavigationView alloc] + initWithFrame:[[_swipeDelegate sideSwipeFullscreenView] frame] + snapshot:lensOverlayTabHelper->GetViewportSnapshot()]; +} + @end
diff --git a/ios/chrome/browser/side_swipe/ui_bundled/side_swipe_navigation_view.h b/ios/chrome/browser/side_swipe/ui_bundled/side_swipe_navigation_view.h index c28cb33..590ee5f 100644 --- a/ios/chrome/browser/side_swipe/ui_bundled/side_swipe_navigation_view.h +++ b/ios/chrome/browser/side_swipe/ui_bundled/side_swipe_navigation_view.h
@@ -7,13 +7,13 @@ #import <UIKit/UIKit.h> +#import "ios/chrome/browser/side_swipe/ui_bundled/horizontal_pan_gesture_handler.h" + @class SideSwipeGestureRecognizer; // Accessory view showing forward or back arrow while the main target view // is dragged from side to side. -@interface SideSwipeNavigationView : UIView - -@property(nonatomic, weak) UIView* targetView; +@interface SideSwipeNavigationView : UIView <HorizontalPanGestureHandler> // Initialize with direction. - (instancetype)initWithFrame:(CGRect)frame @@ -21,18 +21,6 @@ canNavigate:(BOOL)canNavigate image:(UIImage*)image; -// Update views for latest gesture, and call completion blocks whether -// `threshold` is met. -- (void)handleHorizontalPan:(SideSwipeGestureRecognizer*)gesture - onOverThresholdCompletion:(void (^)(void))onOverThresholdCompletion - onUnderThresholdCompletion:(void (^)(void))onUnderThresholdCompletion; - -// Performs an animation on the view that simulates a swipe in `direction` and -// call `completion` when the animation completes. -- (void)animateHorizontalPanWithDirection: - (UISwipeGestureRecognizerDirection)direction - completionHandler:(void (^)(void))completion; - @end #endif // IOS_CHROME_BROWSER_SIDE_SWIPE_UI_BUNDLED_SIDE_SWIPE_NAVIGATION_VIEW_H_
diff --git a/ios/chrome/browser/side_swipe/ui_bundled/side_swipe_snapshot_navigation_view.h b/ios/chrome/browser/side_swipe/ui_bundled/side_swipe_snapshot_navigation_view.h new file mode 100644 index 0000000..e2d90ce --- /dev/null +++ b/ios/chrome/browser/side_swipe/ui_bundled/side_swipe_snapshot_navigation_view.h
@@ -0,0 +1,22 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_SIDE_SWIPE_UI_BUNDLED_SIDE_SWIPE_SNAPSHOT_NAVIGATION_VIEW_H_ +#define IOS_CHROME_BROWSER_SIDE_SWIPE_UI_BUNDLED_SIDE_SWIPE_SNAPSHOT_NAVIGATION_VIEW_H_ + +#import <UIKit/UIKit.h> + +#import "ios/chrome/browser/side_swipe/ui_bundled/horizontal_pan_gesture_handler.h" + +// A view showing a snapshot image while the target view is dragged +// from side to side. +@interface SideSwipeSnapshotNavigationView + : UIView <HorizontalPanGestureHandler> + +// Initialize the view with a given frame and a snapshot image. +- (instancetype)initWithFrame:(CGRect)frame snapshot:(UIImage*)snapshotImage; + +@end + +#endif // IOS_CHROME_BROWSER_SIDE_SWIPE_UI_BUNDLED_SIDE_SWIPE_SNAPSHOT_NAVIGATION_VIEW_H_
diff --git a/ios/chrome/browser/side_swipe/ui_bundled/side_swipe_snapshot_navigation_view.mm b/ios/chrome/browser/side_swipe/ui_bundled/side_swipe_snapshot_navigation_view.mm new file mode 100644 index 0000000..b2ec7e7 --- /dev/null +++ b/ios/chrome/browser/side_swipe/ui_bundled/side_swipe_snapshot_navigation_view.mm
@@ -0,0 +1,161 @@ +// Copyright 2024 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "ios/chrome/browser/side_swipe/ui_bundled/side_swipe_snapshot_navigation_view.h" + +#import <cmath> +#import <numbers> + +#import "ios/chrome/browser/shared/ui/util/uikit_ui_util.h" +#import "ios/chrome/browser/side_swipe/ui_bundled/side_swipe_gesture_recognizer.h" +#import "ios/chrome/common/ui/util/constraints_ui_util.h" +#import "ios/chrome/common/ui/util/ui_util.h" + +namespace { + +// When the swipe gesture reaches this value, the navigation is initiated. +const CGFloat kSwipeThreshold = 0.53; + +// The duration of the animations played when the swipe threshold is met. +const NSTimeInterval kOverThresholdAnimationDuration = 0.3; + +// The duration of the animations played when the swipe threshold is not met. +const NSTimeInterval kUnderThresholdAnimationDuration = 0.1; + +// The navigation delay duration. +const NSTimeInterval kNavigationDelay = 0.2; + +} // namespace + +@implementation SideSwipeSnapshotNavigationView + +// Synthesized from protocol. +@synthesize targetView = _targetView; + +- (instancetype)initWithFrame:(CGRect)frame snapshot:(UIImage*)snapshotImage { + self = [super initWithFrame:frame]; + if (self) { + UIImageView* snapshot = [[UIImageView alloc] initWithImage:snapshotImage]; + snapshot.translatesAutoresizingMaskIntoConstraints = NO; + [self addSubview:snapshot]; + AddSameConstraints(self, snapshot); + } + return self; +} + +- (void)handleHorizontalPan:(SideSwipeGestureRecognizer*)gesture + onOverThresholdCompletion:(void (^)(void))onOverThresholdCompletion + onUnderThresholdCompletion:(void (^)(void))onUnderThresholdCompletion { + CGPoint currentPoint = [gesture locationInView:gesture.view.superview]; + CGFloat distance = currentPoint.x - gesture.swipeOffset; + CGRect frame = self.targetView.frame; + if (gesture.direction == UISwipeGestureRecognizerDirectionLeft) { + frame.origin.x = -distance; + } else { + frame.origin.x = distance; + } + self.targetView.frame = frame; + + if (gesture.state == UIGestureRecognizerStateEnded || + gesture.state == UIGestureRecognizerStateCancelled || + gesture.state == UIGestureRecognizerStateFailed) { + CGFloat width = CGRectGetWidth(self.targetView.bounds); + CGFloat threshold = width * kSwipeThreshold; + // Ensure the actual distance traveled has met the minimum arrow threshold + // and that the distance including expected velocity is over `threshold`. + if (distance > threshold && + gesture.state == UIGestureRecognizerStateEnded) { + [self performNavigationAnimationWithDirection:gesture.direction + duration: + kOverThresholdAnimationDuration + completionHandler:onOverThresholdCompletion]; + } else { + [self animateTargetViewCompleted:NO + withDirection:gesture.direction + withDuration:kUnderThresholdAnimationDuration + completionHandler:onUnderThresholdCompletion]; + } + } +} + +- (void)animateHorizontalPanWithDirection: + (UISwipeGestureRecognizerDirection)direction + completionHandler:(void (^)(void))completion { + [self performNavigationAnimationWithDirection:direction + duration:kOverThresholdAnimationDuration + completionHandler:completion]; +} + +#pragma mark - Private + +// Animates navigation with the duration `animationTime` and execute completion +// handler afterwards. +- (void)performNavigationAnimationWithDirection: + (UISwipeGestureRecognizerDirection)direction + duration:(NSTimeInterval)animationTime + completionHandler:(void (^)(void))block { + TriggerHapticFeedbackForImpact(UIImpactFeedbackStyleMedium); + [self animateTargetViewCompleted:YES + withDirection:direction + withDuration:animationTime + completionHandler:block]; +} + +// Animates the targetView to slide to the side. +- (void)animateTargetViewCompleted:(BOOL)completed + withDirection:(UISwipeGestureRecognizerDirection)direction + withDuration:(NSTimeInterval)duration + completionHandler:(void (^)(void))block { + __weak SideSwipeSnapshotNavigationView* weakSelf = self; + [UIView animateWithDuration:duration + animations:^{ + [weakSelf handleTargetViewAnimationWithCompleted:completed + withDirection:direction]; + } + completion:^(BOOL finished) { + block(); + // To avoid flickering, the target frame reset is delayed until after + // the web view navigation completes. + dispatch_after( + dispatch_time(DISPATCH_TIME_NOW, kNavigationDelay * NSEC_PER_SEC), + dispatch_get_main_queue(), ^{ + [weakSelf handleTargetViewAnimationCompletion]; + }); + }]; +} + +// Moves the targetFrame to the side if completed, resets it to fullscreen +// otherwise. +- (void)handleTargetViewAnimationWithCompleted:(BOOL)completed + withDirection: + (UISwipeGestureRecognizerDirection) + direction { + CGRect targetFrame = self.targetView.frame; + CGRect frame = self.frame; + CGFloat width = CGRectGetWidth(targetFrame); + + if (completed) { + frame.origin.x = 0; + self.frame = frame; + targetFrame.origin.x = + direction == UISwipeGestureRecognizerDirectionRight ? width : -width; + self.targetView.frame = targetFrame; + } else { + targetFrame.origin.x = 0; + self.targetView.frame = targetFrame; + frame.origin.x = + direction == UISwipeGestureRecognizerDirectionLeft ? width : 0; + self.frame = frame; + } +} + +// Resets the target frame and removes the view. +- (void)handleTargetViewAnimationCompletion { + CGRect frame = self.targetView.frame; + frame.origin.x = 0; + self.targetView.frame = frame; + [self removeFromSuperview]; +} + +@end
diff --git a/ios/chrome/browser/signin/model/authentication_service.mm b/ios/chrome/browser/signin/model/authentication_service.mm index 8484818..882c5089 100644 --- a/ios/chrome/browser/signin/model/authentication_service.mm +++ b/ios/chrome/browser/signin/model/authentication_service.mm
@@ -77,6 +77,7 @@ } // Updates list of loaded profiles used in widgets. +// TODO(crbug.com/380847504): Move this logic out of this class. void UpdateLoadedAccounts(std::vector<AccountInfo> accounts_on_device) { NSMutableDictionary* accounts = [[NSMutableDictionary alloc] init]; for (const AccountInfo& account_info : accounts_on_device) { @@ -85,15 +86,12 @@ forKey:app_group::kHostedDomain]; [account setObject:base::SysUTF8ToNSString(account_info.email) forKey:app_group::kEmail]; - // TODO(crbug.com/380847504): Find an alternative solution in case - // picture_url is empty. - [account setObject:base::SysUTF8ToNSString(account_info.picture_url) - forKey:app_group::kPictureUrl]; - // Add the account to the dictionary of accounts. [accounts setObject:account forKey:base::SysUTF8ToNSString(account_info.gaia)]; + // TODO(crbug.com/380847504): Save avatar info to disk. } + NSUserDefaults* shared_defaults = app_group::GetGroupUserDefaults(); [shared_defaults setObject:accounts forKey:app_group::kAccountsOnDevice]; @@ -802,7 +800,6 @@ ->ReloadAllAccountsFromSystemWithPrimaryAccount( identity_manager_->GetPrimaryAccountId( signin::ConsentLevel::kSignin)); - UpdateLoadedAccounts(identity_manager_->GetAccountsOnDevice()); }
diff --git a/ios/chrome/browser/sync/model/sync_service_factory.mm b/ios/chrome/browser/sync/model/sync_service_factory.mm index 4f09da2..a568135 100644 --- a/ios/chrome/browser/sync/model/sync_service_factory.mm +++ b/ios/chrome/browser/sync/model/sync_service_factory.mm
@@ -13,6 +13,7 @@ #import "components/autofill/core/browser/data_manager/personal_data_manager.h" #import "components/browser_sync/common_controller_builder.h" #import "components/history/core/browser/features.h" +#import "components/history/core/browser/history_service.h" #import "components/keyed_service/core/service_access_type.h" #import "components/network_time/network_time_tracker.h" #import "components/password_manager/core/browser/password_store/password_store_interface.h"
diff --git a/ios/chrome/browser/toolbar/ui_bundled/adaptive_toolbar_mediator.mm b/ios/chrome/browser/toolbar/ui_bundled/adaptive_toolbar_mediator.mm index 5efb200..6d6b553 100644 --- a/ios/chrome/browser/toolbar/ui_bundled/adaptive_toolbar_mediator.mm +++ b/ios/chrome/browser/toolbar/ui_bundled/adaptive_toolbar_mediator.mm
@@ -536,7 +536,7 @@ // Returns the tab group of the active web state, if any. - (const TabGroup*)activeWebStateTabGroup { - if (IsTabGroupIndicatorEnabled()) { + if (IsTabGroupInGridEnabled()) { const int active_index = _webStateList->active_index(); if (active_index != WebStateList::kInvalidIndex) { return _webStateList->GetGroupOfWebStateAt(active_index); @@ -548,15 +548,22 @@ // Returns the tab count to display in the Tab Grid button. - (int)tabCountToDisplay { const TabGroup* activeTabGroup = [self activeWebStateTabGroup]; - return activeTabGroup ? activeTabGroup->range().count() - : _webStateList->count(); + if (activeTabGroup == nullptr) { + return _webStateList->count(); + } + + return IsTabGroupIndicatorEnabled() ? activeTabGroup->range().count() + : _webStateList->count(); } // Returns the tab group state to display in the Tab Grid button. - (ToolbarTabGroupState)tabGroupStateToDisplay { - return [self activeWebStateTabGroup] != nullptr - ? ToolbarTabGroupState::kTabGroup - : ToolbarTabGroupState::kNormal; + const TabGroup* activeTabGroup = [self activeWebStateTabGroup]; + if (activeTabGroup == nullptr) { + return ToolbarTabGroupState::kNormal; + } + return IsTabGroupIndicatorEnabled() ? ToolbarTabGroupState::kTabGroup + : ToolbarTabGroupState::kNormal; } @end
diff --git a/ios/chrome/browser/toolbar/ui_bundled/buttons/toolbar_tab_grid_button.mm b/ios/chrome/browser/toolbar/ui_bundled/buttons/toolbar_tab_grid_button.mm index 68e7f737..1084f16 100644 --- a/ios/chrome/browser/toolbar/ui_bundled/buttons/toolbar_tab_grid_button.mm +++ b/ios/chrome/browser/toolbar/ui_bundled/buttons/toolbar_tab_grid_button.mm
@@ -78,8 +78,8 @@ } - (void)setTabGroupState:(ToolbarTabGroupState)tabGroupState { - CHECK(IsTabGroupIndicatorEnabled() || - tabGroupState == ToolbarTabGroupState::kNormal); + CHECK(tabGroupState == ToolbarTabGroupState::kNormal || + IsTabGroupIndicatorEnabled()); if (_tabGroupState == tabGroupState) { return; }
diff --git a/ios/chrome/browser/toolbar/ui_bundled/primary_toolbar_coordinator.mm b/ios/chrome/browser/toolbar/ui_bundled/primary_toolbar_coordinator.mm index 9f12b31..3e92b059 100644 --- a/ios/chrome/browser/toolbar/ui_bundled/primary_toolbar_coordinator.mm +++ b/ios/chrome/browser/toolbar/ui_bundled/primary_toolbar_coordinator.mm
@@ -87,7 +87,7 @@ [super start]; self.started = YES; - if (IsTabGroupIndicatorEnabled()) { + if (IsTabGroupInGridEnabled()) { // The `_tabGroupIndicatorCoordinator` should be configured after the // `AdaptiveToolbarCoordinator` to gain access to the `PrimaryToolbarView`. _tabGroupIndicatorCoordinator = [[TabGroupIndicatorCoordinator alloc] @@ -108,10 +108,8 @@ } [super stop]; [self.browser->GetCommandDispatcher() stopDispatchingToTarget:self]; - if (IsTabGroupIndicatorEnabled()) { - [_tabGroupIndicatorCoordinator stop]; - _tabGroupIndicatorCoordinator = nil; - } + [_tabGroupIndicatorCoordinator stop]; + _tabGroupIndicatorCoordinator = nil; [_mediator disconnect];
diff --git a/ios/chrome/browser/toolbar/ui_bundled/primary_toolbar_view.mm b/ios/chrome/browser/toolbar/ui_bundled/primary_toolbar_view.mm index 5c534b6f..b203e8104 100644 --- a/ios/chrome/browser/toolbar/ui_bundled/primary_toolbar_view.mm +++ b/ios/chrome/browser/toolbar/ui_bundled/primary_toolbar_view.mm
@@ -221,8 +221,7 @@ } - (void)updateTabGroupIndicatorAvailability { - CHECK(IsTabGroupIndicatorEnabled()); - + CHECK(IsTabGroupInGridEnabled()); BOOL isTopOmnibox = self.locationBarView != nil; if (isTopOmnibox) { [NSLayoutConstraint @@ -297,7 +296,7 @@ // Sets tabgroupIndicatorView. - (void)setTabGroupIndicatorView:(TabGroupIndicatorView*)view { - CHECK(IsTabGroupIndicatorEnabled()); + CHECK(IsTabGroupInGridEnabled()); _tabGroupIndicatorView = view; _tabGroupIndicatorView.hidden = YES; _tabGroupIndicatorView.translatesAutoresizingMaskIntoConstraints = NO; @@ -348,7 +347,7 @@ } // If the tab group indicator is visible, add its height to the total height. - if (IsTabGroupIndicatorEnabled() && !_tabGroupIndicatorView.hidden) { + if (IsTabGroupInGridEnabled() && !_tabGroupIndicatorView.hidden) { height += kTabGroupIndicatorHeight; // If the Omnibox is not at the top, remove the top vertical margin to avoid // extra space when the tab group indicator is present. @@ -363,7 +362,8 @@ } - (void)didMoveToSuperview { - if (IsTabGroupIndicatorEnabled()) { + [super didMoveToSuperview]; + if (IsTabGroupInGridEnabled()) { // Ensure the tab group indicator's visibility aligns with the new // superview's layout context. [self updateTabGroupIndicatorAvailability]; @@ -677,7 +677,7 @@ locationBarView.translatesAutoresizingMaskIntoConstraints = NO; [locationBarView setContentHuggingPriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal]; - if (IsTabGroupIndicatorEnabled()) { + if (IsTabGroupInGridEnabled()) { [self updateTabGroupIndicatorAvailability]; }
diff --git a/ios/chrome/browser/toolbar/ui_bundled/primary_toolbar_view_controller.mm b/ios/chrome/browser/toolbar/ui_bundled/primary_toolbar_view_controller.mm index bab14db3..10f19b7 100644 --- a/ios/chrome/browser/toolbar/ui_bundled/primary_toolbar_view_controller.mm +++ b/ios/chrome/browser/toolbar/ui_bundled/primary_toolbar_view_controller.mm
@@ -215,7 +215,7 @@ #pragma mark - Public - (void)setTabGroupIndicatorView:(TabGroupIndicatorView*)view { - CHECK(IsTabGroupIndicatorEnabled()); + CHECK(IsTabGroupInGridEnabled()); self.view.tabGroupIndicatorView = view; } @@ -262,7 +262,7 @@ CGFloat alphaValue = fmax(progress * 2 - 1, 0); self.view.leadingStackView.alpha = alphaValue; self.view.trailingStackView.alpha = alphaValue; - if (IsTabGroupIndicatorEnabled()) { + if (IsTabGroupInGridEnabled()) { self.view.tabGroupIndicatorView.alpha = alphaValue; } self.view.locationBarBottomConstraint.constant = @@ -352,7 +352,7 @@ [self verticalMarginForLocationBarForFullscreenProgress: self.previousFullscreenProgress]; self.view.topCornersRounded = NO; - if (IsTabGroupIndicatorEnabled()) { + if (IsTabGroupInGridEnabled()) { [self.view updateTabGroupIndicatorAvailability]; } [self.delegate
diff --git a/ios/chrome/browser/toolbar/ui_bundled/secondary_toolbar_mediator.mm b/ios/chrome/browser/toolbar/ui_bundled/secondary_toolbar_mediator.mm index 9d30f31d..51ad9fe 100644 --- a/ios/chrome/browser/toolbar/ui_bundled/secondary_toolbar_mediator.mm +++ b/ios/chrome/browser/toolbar/ui_bundled/secondary_toolbar_mediator.mm
@@ -141,7 +141,7 @@ status:(const WebStateListStatus&)status { // Update the Tab Grid button style, based on whether the active tab is // grouped or not. - if (IsTabGroupIndicatorEnabled()) { + if (IsTabGroupInGridEnabled()) { [self.consumer updateTabGroupState:[self tabGroupStateToDisplay]]; } @@ -232,9 +232,11 @@ // Returns the tab group state to display in the Tab Grid button. - (ToolbarTabGroupState)tabGroupStateToDisplay { - return [self activeWebStateTabGroup] != nullptr - ? ToolbarTabGroupState::kTabGroup - : ToolbarTabGroupState::kNormal; + if ([self activeWebStateTabGroup] == nullptr) { + return ToolbarTabGroupState::kNormal; + } + return IsTabGroupIndicatorEnabled() ? ToolbarTabGroupState::kTabGroup + : ToolbarTabGroupState::kNormal; } // Updates the blue dot in the Tab Grid button depending on the messages and the
diff --git a/ios/chrome/browser/toolbar/ui_bundled/tab_groups/coordinator/tab_group_indicator_coordinator.mm b/ios/chrome/browser/toolbar/ui_bundled/tab_groups/coordinator/tab_group_indicator_coordinator.mm index 2de9e7b..ad31b774e 100644 --- a/ios/chrome/browser/toolbar/ui_bundled/tab_groups/coordinator/tab_group_indicator_coordinator.mm +++ b/ios/chrome/browser/toolbar/ui_bundled/tab_groups/coordinator/tab_group_indicator_coordinator.mm
@@ -57,7 +57,7 @@ #pragma mark - ChromeCoordinator - (void)start { - CHECK(IsTabGroupIndicatorEnabled()); + CHECK(IsTabGroupInGridEnabled()); Browser* browser = self.browser; BOOL incognito = browser->GetProfile()->IsOffTheRecord(); _view = [[TabGroupIndicatorView alloc] init];
diff --git a/ios/chrome/browser/toolbar/ui_bundled/tab_groups/coordinator/tab_group_indicator_mediator.mm b/ios/chrome/browser/toolbar/ui_bundled/tab_groups/coordinator/tab_group_indicator_mediator.mm index 40d2d0d4..8be4972 100644 --- a/ios/chrome/browser/toolbar/ui_bundled/tab_groups/coordinator/tab_group_indicator_mediator.mm +++ b/ios/chrome/browser/toolbar/ui_bundled/tab_groups/coordinator/tab_group_indicator_mediator.mm
@@ -77,7 +77,6 @@ CHECK(consumer); CHECK(webStateList); CHECK(tracker); - CHECK(IsTabGroupIndicatorEnabled()); _URLLoader = URLLoader; _shareKitService = shareKitService; _collaborationService = collaborationService; @@ -134,7 +133,7 @@ web::WebState* webState = status.new_active_web_state; if ((status.active_web_state_change() || groupUpdate) && webState) { const TabGroup* tabGroup = [self currentTabGroup]; - if (tabGroup) { + if (tabGroup && IsTabGroupIndicatorEnabled()) { [_consumer setTabGroupTitle:tabGroup->GetTitle() groupColor:tabGroup->GetColor()]; BOOL shared =
diff --git a/ios/chrome/browser/webui/ui_bundled/translate_internals/BUILD.gn b/ios/chrome/browser/webui/ui_bundled/translate_internals/BUILD.gn index 98adc43..2ad48cf 100644 --- a/ios/chrome/browser/webui/ui_bundled/translate_internals/BUILD.gn +++ b/ios/chrome/browser/webui/ui_bundled/translate_internals/BUILD.gn
@@ -14,7 +14,7 @@ "//components/language/ios/browser", "//components/translate/core/common", "//components/translate/translate_internals", - "//ios/chrome/app/resources:ios_resources", + "//components/translate/translate_internals:resources_grit", "//ios/chrome/browser/shared/model/application_context", "//ios/chrome/browser/shared/model/browser", "//ios/chrome/browser/shared/model/profile",
diff --git a/ios/chrome/browser/webui/ui_bundled/translate_internals/translate_internals_ui.mm b/ios/chrome/browser/webui/ui_bundled/translate_internals/translate_internals_ui.mm index 0ee0260..0ae4b26d 100644 --- a/ios/chrome/browser/webui/ui_bundled/translate_internals/translate_internals_ui.mm +++ b/ios/chrome/browser/webui/ui_bundled/translate_internals/translate_internals_ui.mm
@@ -6,12 +6,13 @@ #import <string> +#import "components/grit/translate_internals_resources.h" +#import "components/grit/translate_internals_resources_map.h" #import "components/translate/core/common/translate_util.h" #import "components/translate/translate_internals/translate_internals_handler.h" #import "ios/chrome/browser/shared/model/profile/profile_ios.h" #import "ios/chrome/browser/shared/model/url/chrome_url_constants.h" #import "ios/chrome/browser/webui/ui_bundled/translate_internals/ios_translate_internals_handler.h" -#import "ios/chrome/grit/ios_resources.h" #import "ios/web/public/webui/web_ui_ios.h" #import "ios/web/public/webui/web_ui_ios_data_source.h" @@ -24,12 +25,9 @@ web::WebUIIOSDataSource* source = web::WebUIIOSDataSource::Create(kChromeUITranslateInternalsHost); - source->SetDefaultResource(IDR_IOS_TRANSLATE_INTERNALS_HTML); source->UseStringsJs(); - source->AddResourcePath("translate_internals.css", - IDR_IOS_TRANSLATE_INTERNALS_CSS); - source->AddResourcePath("translate_internals.js", - IDR_IOS_TRANSLATE_INTERNALS_JS); + source->AddResourcePaths(kTranslateInternalsResources); + source->AddResourcePath("", IDR_TRANSLATE_INTERNALS_TRANSLATE_INTERNALS_HTML); base::Value::Dict langs = translate::TranslateInternalsHandler::GetLanguages();
diff --git a/ios/chrome/common/app_group/app_group_constants.h b/ios/chrome/common/app_group/app_group_constants.h index 8418d203..28244f2 100644 --- a/ios/chrome/common/app_group/app_group_constants.h +++ b/ios/chrome/common/app_group/app_group_constants.h
@@ -195,7 +195,6 @@ extern NSString* const kAccountsOnDevice; // Names of keys in dictionary saved in kAccountsOnDevice. extern NSString* const kHostedDomain; -extern NSString* const kPictureUrl; extern NSString* const kEmail; // Supported bundle IDs for opening incognito links in Chrome. @@ -224,6 +223,10 @@ // stored. NSURL* ShortcutsWidgetFaviconsFolder(); +// Gets the shared folder URL in which avatar used by the widgets are +// stored. +NSURL* WidgetsAvatarFolder(); + // Gets the shared folder URL in which favicon attributes used by the credential // provider extensions are stored. NSURL* SharedFaviconAttributesFolder();
diff --git a/ios/chrome/common/app_group/app_group_constants.mm b/ios/chrome/common/app_group/app_group_constants.mm index a15a784..cd0d7fab 100644 --- a/ios/chrome/common/app_group/app_group_constants.mm +++ b/ios/chrome/common/app_group/app_group_constants.mm
@@ -91,7 +91,6 @@ NSString* const kAccountsOnDevice = @"ios.registered_accounts_on_device"; NSString* const kHostedDomain = @"hosted_domain"; -NSString* const kPictureUrl = @"picture_url"; NSString* const kEmail = @"email"; NSString* const kYoutubeBundleID = @"com.google.youtube"; @@ -164,6 +163,10 @@ return [AppGroupHelper widgetsFaviconsFolder]; } +NSURL* WidgetsAvatarFolder() { + return [AppGroupHelper widgetsAvatarFolder]; +} + NSURL* SharedFaviconAttributesFolder() { NSURL* groupURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:ApplicationGroup()];
diff --git a/ios/chrome/common/app_group/app_group_helper.h b/ios/chrome/common/app_group/app_group_helper.h index d18c2b7..d841490 100644 --- a/ios/chrome/common/app_group/app_group_helper.h +++ b/ios/chrome/common/app_group/app_group_helper.h
@@ -23,6 +23,9 @@ // Directory containing the favicons to be used by widgets. + (NSURL*)widgetsFaviconsFolder; +// Directory containing the profile avatar to be used by widgets. ++ (NSURL*)widgetsAvatarFolder; + @end #endif // IOS_CHROME_COMMON_APP_GROUP_APP_GROUP_HELPER_H_
diff --git a/ios/chrome/common/app_group/app_group_helper.mm b/ios/chrome/common/app_group/app_group_helper.mm index 04bb2f0..7c894569b 100644 --- a/ios/chrome/common/app_group/app_group_helper.mm +++ b/ios/chrome/common/app_group/app_group_helper.mm
@@ -50,4 +50,26 @@ return contentWidgetFaviconsURL; } ++ (NSURL*)widgetsAvatarFolder { + NSString* applicationGroup = [AppGroupHelper applicationGroup]; + if (!applicationGroup) { + return nil; + } + NSURL* groupURL = [[NSFileManager defaultManager] + containerURLForSecurityApplicationGroupIdentifier:applicationGroup]; + NSURL* chromeURL = [groupURL URLByAppendingPathComponent:@"Chrome" + isDirectory:YES]; + NSURL* pictureDataURL = [chromeURL URLByAppendingPathComponent:@"AvatarData" + isDirectory:YES]; + + // Create shared folder if it doesn't exist. + if (![[NSFileManager defaultManager] createDirectoryAtPath:pictureDataURL.path + withIntermediateDirectories:YES + attributes:nil + error:nil]) { + return nil; + } + return pictureDataURL; +} + @end
diff --git a/ios/chrome/widget_kit_extension/select_profile_intent.swift b/ios/chrome/widget_kit_extension/select_profile_intent.swift index 5cd2185..7382453 100644 --- a/ios/chrome/widget_kit_extension/select_profile_intent.swift +++ b/ios/chrome/widget_kit_extension/select_profile_intent.swift
@@ -23,6 +23,7 @@ struct ProfileDetail: AppEntity { let id: String + let gaia: String static var typeDisplayRepresentation: TypeDisplayRepresentation = "Profile" static var defaultQuery = ProfileQuery() @@ -36,14 +37,14 @@ else { return [] } guard let profiles = sharedDefaults.object(forKey: "ios.registered_accounts_on_device") - as? [String: [String: String]] + as? [String: [String: Any]] else { return [] } var profilesDetail: [ProfileDetail] = [] - for innerDict in profiles.values { - if let value = innerDict["email"] { - profilesDetail.append(ProfileDetail(id: value)) + for (key, value) in profiles { + if let email = value["email"] as? String { + profilesDetail.append(ProfileDetail(id: email, gaia: key)) } } return profilesDetail @@ -64,4 +65,19 @@ init() { } + + // Returns the avatar linked to the profile. + func avatarForProfile(profile: ProfileDetail) -> Image? { + guard let sharedDefaults: UserDefaults = AppGroupHelper.groupUserDefaults() + else { return nil } + + let avatarFileName = "\(profile.gaia).png" + let avatarFilePath = + AppGroupHelper.widgetsAvatarFolder().appendingPathComponent(avatarFileName) + + guard let uiImage = UIImage(contentsOfFile: avatarFilePath.path) else { + return nil + } + return Image(uiImage: uiImage) + } }
diff --git a/ios/chrome/widget_kit_extension/shortcuts_widget.swift b/ios/chrome/widget_kit_extension/shortcuts_widget.swift index ca092fc..229da3f 100644 --- a/ios/chrome/widget_kit_extension/shortcuts_widget.swift +++ b/ios/chrome/widget_kit_extension/shortcuts_widget.swift
@@ -27,6 +27,9 @@ let isExpired: Bool // Expiration date of the widget if it hasn't expired. let expirationDate: Date? + // Profile avatar (to be used when multiprofile flag is enabled). + let avatar: Image? + } // Advises WidgetKit when to update a widget’s display. @@ -38,7 +41,8 @@ // Provides a timeline entry representing a placeholder version of the widget. func placeholder(in context: TimelineProviderContext) -> Entry { return Entry( - date: Date(), mostVisitedSites: [:], isPreview: true, isExpired: false, expirationDate: nil) + date: Date(), mostVisitedSites: [:], isPreview: true, isExpired: false, expirationDate: nil, + avatar: nil) } // Provides a timeline entry that represents the current time and state of a widget. @@ -132,12 +136,15 @@ // Provides a timeline entry representing a placeholder version of the widget. func placeholder(in context: TimelineProviderContext) -> Entry { return Entry( - date: Date(), mostVisitedSites: [:], isPreview: true, isExpired: false, expirationDate: nil) + date: Date(), mostVisitedSites: [:], isPreview: true, isExpired: false, expirationDate: nil, + avatar: nil) } // Provides a timeline entry that represents the current time and state of a widget. func snapshot(for configuration: SelectProfileIntent, in context: Context) async -> Entry { - let entry = loadMostVisitedSitesEntry(isPreview: context.isPreview) + + let avatar: Image = configuration.avatarForProfile(profile: configuration.profile!)! + let entry = loadMostVisitedSitesEntry(isPreview: context.isPreview, avatar: avatar) return entry } @@ -145,7 +152,8 @@ func timeline(for configuration: SelectProfileIntent, in context: Context) async -> Timeline< Entry > { - let entry = loadMostVisitedSitesEntry(isPreview: context.isPreview) + let avatar: Image = configuration.avatarForProfile(profile: configuration.profile!)! + let entry = loadMostVisitedSitesEntry(isPreview: context.isPreview, avatar: avatar) let entries = [entry] let timeline = Timeline( entries: entries, policy: entry.expirationDate.map { .after($0) } ?? .never) @@ -155,7 +163,9 @@ #endif // Return ConfigureShortcutsWidgetEntry with the most visited sites -func loadMostVisitedSitesEntry(isPreview: Bool) -> ConfigureShortcutsWidgetEntry { +func loadMostVisitedSitesEntry(isPreview: Bool, avatar: Image? = nil) + -> ConfigureShortcutsWidgetEntry +{ // A type that specifies the entry of the configured timeline entry of the widget. typealias Entry = ConfigureShortcutsWidgetEntry @@ -165,7 +175,8 @@ mostVisitedSites: [:], isPreview: isPreview, isExpired: false, - expirationDate: nil + expirationDate: nil, + avatar: avatar ) // A constant of an expired entry. let expiredEntry = Entry( @@ -173,7 +184,8 @@ mostVisitedSites: [:], isPreview: isPreview, isExpired: true, - expirationDate: nil + expirationDate: nil, + avatar: avatar ) // Returns an empty entry if the Shortcuts Widget is in the Widgets Gallery. if isPreview { @@ -227,7 +239,8 @@ mostVisitedSites: mostVisitedSites, isPreview: isPreview, isExpired: false, - expirationDate: expirationDate + expirationDate: expirationDate, + avatar: avatar ) } @@ -297,6 +310,18 @@ .font(.subheadline) .foregroundColor(Colors.widgetTextColor) Spacer() + #if IOS_ENABLE_WIDGETS_FOR_MIM + // Only show the avatar if there is one. + if let avatar = entry.avatar { + avatar + .resizable() + .clipShape(Circle()) + .unredacted() + .scaledToFill() + .frame(width: 35, height: 35) + .padding(.trailing, padding) + } + #endif } } .frame(minWidth: 0, maxWidth: .infinity)
diff --git a/ios/google_internal/frameworks/ChromeExtensionKeychainInternal.framework.dSYM.ios.zip.sha1 b/ios/google_internal/frameworks/ChromeExtensionKeychainInternal.framework.dSYM.ios.zip.sha1 index 25a2b81..ede94dc 100644 --- a/ios/google_internal/frameworks/ChromeExtensionKeychainInternal.framework.dSYM.ios.zip.sha1 +++ b/ios/google_internal/frameworks/ChromeExtensionKeychainInternal.framework.dSYM.ios.zip.sha1
@@ -1 +1 @@ -eb9c3373c455d39532abfd66e7096c6f3a8ac7d1 \ No newline at end of file +e1ca9f19b6327cda00dd4cc202472b273a996cfe \ No newline at end of file
diff --git a/ios/google_internal/frameworks/ChromeExtensionKeychainInternal.framework.dSYM.ios_asan.zip.sha1 b/ios/google_internal/frameworks/ChromeExtensionKeychainInternal.framework.dSYM.ios_asan.zip.sha1 index b2d910e..a7af0232 100644 --- a/ios/google_internal/frameworks/ChromeExtensionKeychainInternal.framework.dSYM.ios_asan.zip.sha1 +++ b/ios/google_internal/frameworks/ChromeExtensionKeychainInternal.framework.dSYM.ios_asan.zip.sha1
@@ -1 +1 @@ -17f9bf7783b763157cec4a5e7a634dcba955298e \ No newline at end of file +6687d24c97104f7518a5490b2278c23480cc7c2f \ No newline at end of file
diff --git a/ios/google_internal/frameworks/ChromeInternal.framework.dSYM.ios.zip.sha1 b/ios/google_internal/frameworks/ChromeInternal.framework.dSYM.ios.zip.sha1 index eab116e..05b8277 100644 --- a/ios/google_internal/frameworks/ChromeInternal.framework.dSYM.ios.zip.sha1 +++ b/ios/google_internal/frameworks/ChromeInternal.framework.dSYM.ios.zip.sha1
@@ -1 +1 @@ -e3e08e47d70815c1b7051fda76a707c9627a00fa \ No newline at end of file +572e5c1b9e74615fb0bee9db5f2a32f439cbd06b \ No newline at end of file
diff --git a/ios/google_internal/frameworks/ChromeInternal.framework.dSYM.ios_asan.zip.sha1 b/ios/google_internal/frameworks/ChromeInternal.framework.dSYM.ios_asan.zip.sha1 index f4de0b6..15a5bedbd 100644 --- a/ios/google_internal/frameworks/ChromeInternal.framework.dSYM.ios_asan.zip.sha1 +++ b/ios/google_internal/frameworks/ChromeInternal.framework.dSYM.ios_asan.zip.sha1
@@ -1 +1 @@ -7c2a48142e52b832c8861e4f06931197ff1e0c6c \ No newline at end of file +5471dcfef6ce2458b6f02f1b084aa9ece6f17ed0 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/ChromeSSOInternal.framework.dSYM.ios.zip.sha1 b/ios/google_internal/frameworks/ChromeSSOInternal.framework.dSYM.ios.zip.sha1 index a49de28f..7b06ec8 100644 --- a/ios/google_internal/frameworks/ChromeSSOInternal.framework.dSYM.ios.zip.sha1 +++ b/ios/google_internal/frameworks/ChromeSSOInternal.framework.dSYM.ios.zip.sha1
@@ -1 +1 @@ -f9917ac1ce351f8adb255f811d9d45609a9af1f0 \ No newline at end of file +9fbecf50f813beb326ad465c0f7f18cf10bdc958 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/ChromeSSOInternal.framework.dSYM.ios_asan.zip.sha1 b/ios/google_internal/frameworks/ChromeSSOInternal.framework.dSYM.ios_asan.zip.sha1 index 790b5fc..89201572 100644 --- a/ios/google_internal/frameworks/ChromeSSOInternal.framework.dSYM.ios_asan.zip.sha1 +++ b/ios/google_internal/frameworks/ChromeSSOInternal.framework.dSYM.ios_asan.zip.sha1
@@ -1 +1 @@ -e95c515c184edc074339d2945fd4da82bcb1e1de \ No newline at end of file +460bf83e1ecab35084dad26b6030e0ca4bfde97e \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.ios.zip.sha1 index 86e7f3f..0c3812a 100644 --- a/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.ios.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@ -6cad793f051eed267982d08cf3d521d593ed1096 \ No newline at end of file +9dba49ae7e5d4ff5510667be5aedf8f2590244a4 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.ios_asan.zip.sha1 b/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.ios_asan.zip.sha1 index 3eeb3e67..d5119663 100644 --- a/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.ios_asan.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.ios_asan.zip.sha1
@@ -1 +1 @@ -595e2612af28325510d3710c9ac39d1f76bd892e \ No newline at end of file +dfabad38c6d32633f9fbe5b78be00ec9b2d4f6e7 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.iossimulator.zip.sha1 index 97f9d80..3ed7bfd 100644 --- a/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.iossimulator.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@ -52fec5bdc54873bd7da87ae273f13d4d39d5b036 \ No newline at end of file +971c753906e7d6a3012b3ace190bedf2c99e17b1 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.iossimulator_asan.zip.sha1 b/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.iossimulator_asan.zip.sha1 index 98b45ac..aea5596 100644 --- a/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.iossimulator_asan.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_extension_keychain_internal_dynamic_framework.iossimulator_asan.zip.sha1
@@ -1 +1 @@ -26790c85261c34191b55e0027c149a422c0dc206 \ No newline at end of file +52de1a9029b8b0b5f832e7cc7023b941a66f9d9f \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios.zip.sha1 index 348539e..3a66c3d 100644 --- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@ -a92e63b324f80c59e44dd404532f599e39f8d889 \ No newline at end of file +199991d9951c24ecea45c497ffe48ba7d655a4cb \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios_asan.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios_asan.zip.sha1 index 8d9d803..a4f15c77 100644 --- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios_asan.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.ios_asan.zip.sha1
@@ -1 +1 @@ -170e7347e990ae375a98c6dccf363aa05106247a \ No newline at end of file +6205d2142f52248e7819833a0051091d85ceeaef \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator.zip.sha1 index a112620..067708c 100644 --- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@ -f1d5fbb28b2686ce2e81bef6879bea7c3384bc1f \ No newline at end of file +ab748dd653714cf3550844f30a8a9ca3e5450863 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator_asan.zip.sha1 b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator_asan.zip.sha1 index 790f0eef..63de7b5 100644 --- a/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator_asan.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_internal_dynamic_framework.iossimulator_asan.zip.sha1
@@ -1 +1 @@ -3843a617a039b4ea158632831b3c1447c75dc34e \ No newline at end of file +92e6272ba0e6f3da1577dcf1143a035a20df846b \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios.zip.sha1 index f95c26d..ba7a328f 100644 --- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@ -70c74d4e35fe9a88a83e117889cdb5cf05cad1a0 \ No newline at end of file +fdc9736d61bab24b874fdfa201e6ae49062d575e \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios_asan.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios_asan.zip.sha1 index 3574805..101ebc3 100644 --- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios_asan.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.ios_asan.zip.sha1
@@ -1 +1 @@ -c793e4ae57940e75867e5d64806d6b57598378ad \ No newline at end of file +5e22cd33277a837e91b84ffd0dfe90ee151598df \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator.zip.sha1 index 9c90dfef2..e2a5020 100644 --- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@ -0dfbfd20354ac6955558ad968ca12bfd8c95bb8e \ No newline at end of file +2425ca3486ca3d6794d3d3fe40b2c585879c283f \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator_asan.zip.sha1 b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator_asan.zip.sha1 index 28695b6..7adb934 100644 --- a/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator_asan.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_sso_internal_dynamic_framework.iossimulator_asan.zip.sha1
@@ -1 +1 @@ -426df34ee3ab9e94286c5e4214f203a595b22214 \ No newline at end of file +f33067cb299eb413feecdac9b5ab2bd5ddfda9e4 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.ios.zip.sha1 index 77ae040..8c94bb6b 100644 --- a/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.ios.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@ -8a5a480e0a0c9b3a141d15595bdaddf35b17dd4a \ No newline at end of file +51b805092a8586e6a15ec2620136e76a81f9c9c0 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.iossimulator.zip.sha1 index 70190fd60..0833a8a 100644 --- a/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.iossimulator.zip.sha1 +++ b/ios/google_internal/frameworks/chrome_test_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@ -9898770327b5387e8f9cf8f99a7bd70b6848480d \ No newline at end of file +141c7a7b1b73e5db613b2b3459143df0f4318535 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios.zip.sha1 index aa7d6827..439bc55d8 100644 --- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@ -307c9a3d3d856fe3005490db6f0756f6089ae253 \ No newline at end of file +92eb9b384365835b2065a381da0b9d1ee076580d \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios_asan.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios_asan.zip.sha1 index 46de519..5789dde 100644 --- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios_asan.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.ios_asan.zip.sha1
@@ -1 +1 @@ -8859f357bae51a4bbb391b0bdaa4e2930fd18e1b \ No newline at end of file +83610c5dfc9e7c85a32e124f5645d6973071d63c \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator.zip.sha1 index fee912cc..4874aa1 100644 --- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@ -72b4d939906425e9476131bcc222d19ae19313fd \ No newline at end of file +09f1f695b635fd7ecc03083361bdf8541c8a2b54 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator_asan.zip.sha1 b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator_asan.zip.sha1 index 6b3698d6..ac2e64d 100644 --- a/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator_asan.zip.sha1 +++ b/ios/google_internal/frameworks/remoting_internal_dynamic_framework.iossimulator_asan.zip.sha1
@@ -1 +1 @@ -622af5c36a4f1ae2ce0b6859a96cf212284f1260 \ No newline at end of file +363dc20dbc4841788c54b3c705f70181795e32ed \ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios.zip.sha1 index fa14703..a204b8e 100644 --- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios.zip.sha1 +++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios.zip.sha1
@@ -1 +1 @@ -c20f15c23aabbcf5171fb4d23b0ee45d638243c7 \ No newline at end of file +7e3e3a69a57638df8831bec9de343e13dc9898d9 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios_asan.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios_asan.zip.sha1 index e8d986d1..80be1cc1 100644 --- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios_asan.zip.sha1 +++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.ios_asan.zip.sha1
@@ -1 +1 @@ -102409251ba9abaa05d0ebd9ccabd974d1e0c20a \ No newline at end of file +410888b44529570f9c00a4beadfb575df0153b98 \ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator.zip.sha1 index 0ce518c..962117d0 100644 --- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator.zip.sha1 +++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator.zip.sha1
@@ -1 +1 @@ -a7ba51dcb48a8a672748ecdf287638cc65a9a9ab \ No newline at end of file +c2f7d0d7e7db529217db5913e19f231e549c823f \ No newline at end of file
diff --git a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator_asan.zip.sha1 b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator_asan.zip.sha1 index 574afd94..db07508 100644 --- a/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator_asan.zip.sha1 +++ b/ios/google_internal/frameworks/web_view_shell_internal_dynamic_framework.iossimulator_asan.zip.sha1
@@ -1 +1 @@ -65ef491021f332f91d46e6a46672c649113b1dcb \ No newline at end of file +23ae741873b9da24dcc78c21680e42e2f3d945ad \ No newline at end of file
diff --git a/ios_internal b/ios_internal index c2cac50..ae4eac6 160000 --- a/ios_internal +++ b/ios_internal
@@ -1 +1 @@ -Subproject commit c2cac502a019ec8772db7b7aa574975c1ce78368 +Subproject commit ae4eac69b182afea8eeb44148e709b4338bbb276
diff --git a/services/device/geolocation/position_cache_impl.cc b/services/device/geolocation/position_cache_impl.cc index a888fd5..85db0234 100644 --- a/services/device/geolocation/position_cache_impl.cc +++ b/services/device/geolocation/position_cache_impl.cc
@@ -78,7 +78,8 @@ const mojom::Geoposition* PositionCacheImpl::FindPosition( const WifiData& wifi_data) { const Hash key = MakeKey(wifi_data); - auto it = base::ranges::find(data_, key); + auto it = std::ranges::find_if( + data_, [key](const CacheEntry& entry) { return entry == key; }); if (it == data_.end()) { ++miss_count_; last_miss_ = base::Time::Now();
diff --git a/services/network/cookie_settings.cc b/services/network/cookie_settings.cc index 25b2357..36483846 100644 --- a/services/network/cookie_settings.cc +++ b/services/network/cookie_settings.cc
@@ -302,14 +302,14 @@ setting_with_metadata, first_party_set_metadata, cookie.access_result.status); } - const auto to_be_moved = base::ranges::stable_partition( + const auto to_be_moved = std::ranges::stable_partition( maybe_included_cookies, [](const net::CookieWithAccessResult& cookie) { return cookie.access_result.status.IsInclude(); }); - excluded_cookies.insert( - excluded_cookies.end(), std::make_move_iterator(to_be_moved), - std::make_move_iterator(maybe_included_cookies.end())); - maybe_included_cookies.erase(to_be_moved, maybe_included_cookies.end()); + excluded_cookies.insert(excluded_cookies.end(), + std::make_move_iterator(to_be_moved.begin()), + std::make_move_iterator(to_be_moved.end())); + maybe_included_cookies.erase(to_be_moved.begin(), to_be_moved.end()); net::cookie_util::DCheckIncludedAndExcludedCookieLists(maybe_included_cookies, excluded_cookies);
diff --git a/services/network/public/cpp/sri_message_signatures.cc b/services/network/public/cpp/sri_message_signatures.cc index 1204aa3..bb58185b 100644 --- a/services/network/public/cpp/sri_message_signatures.cc +++ b/services/network/public/cpp/sri_message_signatures.cc
@@ -42,9 +42,12 @@ } std::optional<mojom::SRIMessageSignatureComponentPtr> ParseComponent( - const net::structured_headers::ParameterizedItem& component) { + const net::structured_headers::ParameterizedItem& component, + std::vector<mojom::SRIMessageSignatureError>& parsing_errors) { // https://wicg.github.io/signature-based-sri/#profile if (!component.item.is_string()) { + parsing_errors.push_back(mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidComponentType); return std::nullopt; } @@ -53,6 +56,9 @@ // The "identity-digest" component requires a single `sf` parameter with // a `true` boolean value. if (!ItemHasSingleBooleanParam(component, "sf")) { + parsing_errors.push_back( + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidHeaderComponentParameter); return std::nullopt; } auto result = mojom::SRIMessageSignatureComponent::New(); @@ -63,6 +69,9 @@ // Derived components require a single `req` parameter with a `true` boolean // value. if (!ItemHasSingleBooleanParam(component, "req")) { + parsing_errors.push_back( + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidDerivedComponentParameter); return std::nullopt; } auto result = mojom::SRIMessageSignatureComponent::New(); @@ -70,6 +79,8 @@ result->params.push_back(Parameters::kRequest); return result; } else { + parsing_errors.push_back(mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidComponentName); return std::nullopt; } } @@ -322,10 +333,15 @@ // Grab the relevant `Signature-Input` entry, punting early if none exists // or if its value is not a non-empty parameterized inner-list. if (!input_dictionary->contains(signature_entry.first)) { + parsed_headers->parsing_errors.push_back( + mojom::SRIMessageSignatureError::kSignatureInputHeaderMissingLabel); continue; } auto input_entry = input_dictionary->at(signature_entry.first); if (!input_entry.member_is_inner_list) { + parsed_headers->parsing_errors.push_back( + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderValueNotInnerList); continue; } @@ -334,7 +350,7 @@ // entire header; if both valid and invalid signatures are delivered, // we'll retain the former while ignoring the latter). std::optional<mojom::SRIMessageSignatureComponentPtr> parsed_component = - ParseComponent(component); + ParseComponent(component, parsed_headers->parsing_errors); if (!parsed_component.has_value()) { message_signature.reset(); break; @@ -344,6 +360,9 @@ } if (!message_signature || message_signature->components.empty()) { + parsed_headers->parsing_errors.push_back( + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderValueMissingComponents); continue; } @@ -360,6 +379,9 @@ std::string value = param.second.GetString(); std::optional<std::vector<uint8_t>> decoded = base::Base64Decode(value); if (!decoded || decoded->size() != kEd25519KeyLength) { + parsed_headers->parsing_errors.push_back( + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderKeyIdLength); message_signature.reset(); break; } @@ -375,6 +397,9 @@ // invalidate the signature. // // https://www.iana.org/assignments/http-message-signature/http-message-signature.xhtml#signature-metadata-parameters + parsed_headers->parsing_errors.push_back( + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidParameter); message_signature.reset(); break; } @@ -383,6 +408,9 @@ if (message_signature) { // Check required fields, and punt the signature if any are missing. if (!message_signature->keyid || !message_signature->tag) { + parsed_headers->parsing_errors.push_back( + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderMissingRequiredParameters); continue; }
diff --git a/services/network/public/cpp/sri_message_signatures_unittest.cc b/services/network/public/cpp/sri_message_signatures_unittest.cc index 3b15b1c2..d221f511 100644 --- a/services/network/public/cpp/sri_message_signatures_unittest.cc +++ b/services/network/public/cpp/sri_message_signatures_unittest.cc
@@ -80,9 +80,15 @@ const char* kValidSignatureInputHeader = "signature=(\"identity-digest\";sf);keyid=\"JrQLj5P/89iXES9+vFgrIy29clF9CC/" "oPPsw3c5D0bs=\";tag=\"sri\""; +const char* kUnusedSignatureInputHeader = + "unused-signature=(\"identity-digest\";sf);keyid=\"JrQLj5P/89iXES9+vFgrIy29" + "clF9CC/oPPsw3c5D0bs=\";tag=\"sri\""; const char* kValidSignatureHeader = "signature=:eTKYITprfJYJmsOZlRTmu0szHbt0yLxHYBU0oXDdkx8najLl59IPO0zUofe5T23" "RGuquHLdZx177tBX45CUcAg==:"; +const char* kUnusedSignatureHeader = + "unused-input=:eTKYITprfJYJmsOZlRTmu0szHbt0yLxHYBU0oXDdkx8najLl59IPO0zUofe5" + "T23RGuquHLdZx177tBX45CUcAg==:"; // The following signature was generated using test-key-ed25519 from RFC 9421 // (https://datatracker.ietf.org/doc/html/rfc9421#appendix-B.1.4), @@ -186,9 +192,9 @@ // We're currently ignoring this mismatched signature, and therefore treating // the header as valid. std::string two_signatures = - base::StrCat({"unused=:badbeef:,", kValidSignatureHeader}); + base::StrCat({kUnusedSignatureHeader, ",", kValidSignatureHeader}); std::string two_inputs = base::StrCat( - {"also-unused=(\"arbitrary\" \"data\"),", kValidSignatureInputHeader}); + {kUnusedSignatureInputHeader, ",", kValidSignatureInputHeader}); // Too many signatures: { @@ -197,6 +203,10 @@ mojom::SRIMessageSignaturesPtr result = ParseSRIMessageSignaturesFromHeaders(*headers); EXPECT_EQ(1u, result->signatures.size()); + EXPECT_EQ(1u, result->parsing_errors.size()); + EXPECT_EQ( + mojom::SRIMessageSignatureError::kSignatureInputHeaderMissingLabel, + result->parsing_errors[0]); ValidateBasicTestHeader(result->signatures[0]); } @@ -206,6 +216,8 @@ mojom::SRIMessageSignaturesPtr result = ParseSRIMessageSignaturesFromHeaders(*headers); EXPECT_EQ(1u, result->signatures.size()); + // TODO(crbug.com/381044049): We should probably have a parsing error here. + EXPECT_EQ(0u, result->parsing_errors.size()); ValidateBasicTestHeader(result->signatures[0]); } @@ -215,6 +227,10 @@ mojom::SRIMessageSignaturesPtr result = ParseSRIMessageSignaturesFromHeaders(*headers); EXPECT_EQ(1u, result->signatures.size()); + EXPECT_EQ(1u, result->parsing_errors.size()); + EXPECT_EQ( + mojom::SRIMessageSignatureError::kSignatureInputHeaderMissingLabel, + result->parsing_errors[0]); ValidateBasicTestHeader(result->signatures[0]); } } @@ -266,93 +282,181 @@ } TEST_F(SRIMessageSignatureParserTest, MalformedSignatureInputComponents) { - const char* cases[] = { + struct { + const char* value; + mojom::SRIMessageSignatureError error; + } cases[] = { // Non-dictionaries: - "", - "1", - "1.1", - "\"string\"", - "token", - ":lS/LFS0xbMKoQ0JWBZySc9ChRIZMbAuWO69kAVCb12k=:", - "?0", - "@12345", - "%\"display\"", - "A, list, of, tokens", - "(inner list)", + {"", mojom::SRIMessageSignatureError::kInvalidSignatureInputHeader}, + {"1", mojom::SRIMessageSignatureError::kInvalidSignatureInputHeader}, + {"1.1", mojom::SRIMessageSignatureError::kInvalidSignatureInputHeader}, + {"\"string\"", + mojom::SRIMessageSignatureError::kInvalidSignatureInputHeader}, + {":lS/LFS0xbMKoQ0JWBZySc9ChRIZMbAuWO69kAVCb12k=:", + mojom::SRIMessageSignatureError::kInvalidSignatureInputHeader}, + {"?0", mojom::SRIMessageSignatureError::kInvalidSignatureInputHeader}, + {"A, list, of, tokens", + mojom::SRIMessageSignatureError::kInvalidSignatureInputHeader}, + {"(inner list)", + mojom::SRIMessageSignatureError::kInvalidSignatureInputHeader}, + {"@12345", mojom::SRIMessageSignatureError::kInvalidSignatureInputHeader}, + {"%\"display\"", + mojom::SRIMessageSignatureError::kInvalidSignatureInputHeader}, // Dictionaries with non-inner-list values: - "signature=", - "signature=1", - "signature=1.1", - "signature=\"string\"", - "signature=token", - "signature=?0", - "signature=@12345", - "signature=%\"display\"", - "signature=:badbeef:", + {"signature", + mojom::SRIMessageSignatureError::kSignatureInputHeaderValueNotInnerList}, + {"signature=", + mojom::SRIMessageSignatureError::kInvalidSignatureInputHeader}, + {"signature=1", + mojom::SRIMessageSignatureError::kSignatureInputHeaderValueNotInnerList}, + {"signature=1.1", + mojom::SRIMessageSignatureError::kSignatureInputHeaderValueNotInnerList}, + {"signature=\"string\"", + mojom::SRIMessageSignatureError::kSignatureInputHeaderValueNotInnerList}, + {"signature=token", + mojom::SRIMessageSignatureError::kSignatureInputHeaderValueNotInnerList}, + {"signature=?0", + mojom::SRIMessageSignatureError::kSignatureInputHeaderValueNotInnerList}, + {"signature=:badbeef:", + mojom::SRIMessageSignatureError::kSignatureInputHeaderValueNotInnerList}, + // We don't yet support dates or display strings, so these are invalid + // headers, not invalid types. + {"signature=@12345", + mojom::SRIMessageSignatureError::kInvalidSignatureInputHeader}, + {"signature=%\"display\"", + mojom::SRIMessageSignatureError::kInvalidSignatureInputHeader}, // Dictionaries with inner-list values that contain non-strings: - "signature=()", - "signature=(1)", - "signature=(1.1)", - "signature=(token)", - "signature=(:lS/LFS0xbMKoQ0JWBZySc9ChRIZMbAuWO69kAVCb12k=:)", - "signature=(?0)", - "signature=(@12345)", - "signature=(%\"display\")", - "signature=(A, list, of, tokens)", - "signature=(\"invalid header names\")", - "signature=(\"@unknown-derived-components\")", + {"signature=()", mojom::SRIMessageSignatureError:: + kSignatureInputHeaderValueMissingComponents}, + {"signature=(1)", mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidComponentType}, + {"signature=(1.1)", mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidComponentType}, + {"signature=(token)", mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidComponentType}, + {"signature=(:lS/LFS0xbMKoQ0JWBZySc9ChRIZMbAuWO69kAVCb12k=:)", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidComponentType}, + {"signature=(?0)", mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidComponentType}, + {"signature=(A list of tokens)", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidComponentType}, + // We don't yet support dates or display strings, so these are invalid + // headers, not invalid types. + {"signature=(@12345)", + mojom::SRIMessageSignatureError::kInvalidSignatureInputHeader}, + {"signature=(%\"display\")", + mojom::SRIMessageSignatureError::kInvalidSignatureInputHeader}, // Components that are valid per-spec, but aren't quite constrained enough // for SRI's initial implementation. We'll eventually treat these as valid // headers, but they're parse errors for now. - "signature=(\"not-identity-digest\")", - "signature=(\"Identity-Digest\")", - "signature=(\"IDENTITY-DIGEST\")", - "signature=(\"identity-digest\" \"and-something-else\")", - "signature=(\"something-else\" \"identity-digest\")", + {"signature=(\"invalid header names\")", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidComponentName}, + {"signature=(\"@unknown-derived-components\")", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidComponentName}, + {"signature=(\"not-identity-digest\")", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidComponentName}, + {"signature=(\"Identity-Digest\")", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidComponentName}, + {"signature=(\"IDENTITY-DIGEST\")", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidComponentName}, + {"signature=(\"identity-digest\" \"and-something-else\")", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidHeaderComponentParameter}, + {"signature=(\"something-else\" \"identity-digest\")", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidComponentName}, // Invalid component params: - "signature=(\"identity-digest\")", - "signature=(\"identity-digest\";sf=)", - "signature=(\"identity-digest\";sf=1)", - "signature=(\"identity-digest\";sf=1.1)", - "signature=(\"identity-digest\";sf=\"string\")", - "signature=(\"identity-digest\";sf=token)", - "signature=(\"identity-digest\";sf=?0)", - "signature=(\"identity-digest\";sf=@12345)", - "signature=(\"identity-digest\";sf=%\"display\")", - "signature=(\"identity-digest\";sf=:badbeef:)", - "signature=(\"identity-digest\";sf;not-sf)", + {"signature=(\"identity-digest\")", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidHeaderComponentParameter}, + {"signature=(\"identity-digest\";sf=)", + mojom::SRIMessageSignatureError::kInvalidSignatureInputHeader}, + {"signature=(\"identity-digest\";sf=1)", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidHeaderComponentParameter}, + {"signature=(\"identity-digest\";sf=1.1)", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidHeaderComponentParameter}, + {"signature=(\"identity-digest\";sf=\"string\")", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidHeaderComponentParameter}, + {"signature=(\"identity-digest\";sf=token)", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidHeaderComponentParameter}, + {"signature=(\"identity-digest\";sf=?0)", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidHeaderComponentParameter}, + {"signature=(\"identity-digest\";sf=:badbeef:)", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidHeaderComponentParameter}, + {"signature=(\"identity-digest\";sf;not-sf)", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidHeaderComponentParameter}, + // We don't yet support dates or display strings, so these are invalid + // headers, not invalid types. + {"signature=(\"identity-digest\";sf=@12345)", + mojom::SRIMessageSignatureError::kInvalidSignatureInputHeader}, + {"signature=(\"identity-digest\";sf=%\"display\")", + mojom::SRIMessageSignatureError::kInvalidSignatureInputHeader}, // One valid, one invalid component: - "signature=(\"identity-digest\";sf \"unknown\")", - "signature=(\"unknown\" \"identity-digest\";sf)", - "signature=(\"identity-digest\";sf \"@path\")", // No `;req` on `@path` - "signature=(\"@path\" \"identity-digest\";sf)", - "signature=(\"identity-digest\";sf @path;req)", // `@path` isn't a string - "signature=(@path;req \"identity-digest\";sf)", + {"signature=(\"identity-digest\";sf \"unknown\")", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidComponentName}, + {"signature=(\"unknown\" \"identity-digest\";sf)", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidComponentName}, + {"signature=(\"identity-digest\";sf \"@path\")", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidDerivedComponentParameter}, + {"signature=(\"@path\" \"identity-digest\";sf)", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidDerivedComponentParameter}, + {"signature=(\"identity-digest\";sf token;req)", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidComponentType}, + {"signature=(token;req \"identity-digest\";sf)", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidComponentType}, - // Valid component, without valid `identity-digest`: - "signature=(\"identity-digest\" @path;req)", // No `;sf` - "signature=(@path;req \"identity-digest\")", - "signature=(@path;req \"not-identity-digest\";sf)", + // Valid component without valid `identity-digest`: + {"signature=(\"identity-digest\" \"@path\";req)", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidHeaderComponentParameter}, + {"signature=(\"@path\";req \"identity-digest\")", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidHeaderComponentParameter}, + {"signature=(\"@path\";req \"not-identity-digest\";sf)", + mojom::SRIMessageSignatureError:: + kSignatureInputHeaderInvalidComponentName}, }; - for (const char* test : cases) { - SCOPED_TRACE(testing::Message() << "Header value: `" << test << "`"); + for (const auto test : cases) { + SCOPED_TRACE(testing::Message() << "Header value: `" << test.value << "`"); // Tack valid parameters onto the test string so that we're actually // just testing the component parsing. std::string test_with_params = - base::StrCat({test, ";keyid=\"", kPublicKey, "\";tag=\"sri\""}); + base::StrCat({test.value, ";keyid=\"", kPublicKey, "\";tag=\"sri\""}); auto headers = GetHeaders(kValidSignatureHeader, test_with_params.c_str()); mojom::SRIMessageSignaturesPtr result = ParseSRIMessageSignaturesFromHeaders(*headers); // As these are all malformed, we expect parsing to return no headers. EXPECT_EQ(0u, result->signatures.size()); + ASSERT_GT(result->parsing_errors.size(), 0u); + EXPECT_THAT(result->parsing_errors, testing::Contains(test.error)); } }
diff --git a/services/network/public/cpp/supports_loading_mode/supports_loading_mode_parser.cc b/services/network/public/cpp/supports_loading_mode/supports_loading_mode_parser.cc index bc903ad..4df074e 100644 --- a/services/network/public/cpp/supports_loading_mode/supports_loading_mode_parser.cc +++ b/services/network/public/cpp/supports_loading_mode/supports_loading_mode_parser.cc
@@ -67,7 +67,8 @@ // Order and repetition are not significant. // Canonicalize by making the vector sorted and unique. base::ranges::sort(modes); - modes.erase(base::ranges::unique(modes), modes.end()); + auto repeated = std::ranges::unique(modes); + modes.erase(repeated.begin(), repeated.end()); return mojom::SupportsLoadingMode::New(std::move(modes)); }
diff --git a/services/network/public/mojom/sri_message_signature.mojom b/services/network/public/mojom/sri_message_signature.mojom index 30b460d..0be4db9 100644 --- a/services/network/public/mojom/sri_message_signature.mojom +++ b/services/network/public/mojom/sri_message_signature.mojom
@@ -75,6 +75,16 @@ kSignatureHeaderValueIsNotByteSequence, kSignatureHeaderValueIsParameterized, kSignatureHeaderValueIsIncorrectLength, + kSignatureInputHeaderMissingLabel, + kSignatureInputHeaderValueNotInnerList, + kSignatureInputHeaderValueMissingComponents, + kSignatureInputHeaderInvalidComponentType, + kSignatureInputHeaderInvalidComponentName, + kSignatureInputHeaderInvalidHeaderComponentParameter, + kSignatureInputHeaderInvalidDerivedComponentParameter, + kSignatureInputHeaderKeyIdLength, + kSignatureInputHeaderInvalidParameter, + kSignatureInputHeaderMissingRequiredParameters, }; // Contains the set of valid message signatures for a given response, along with
diff --git a/services/network/web_bundle/web_bundle_manager.cc b/services/network/web_bundle/web_bundle_manager.cc index 0fbcbdc3..9cf2df4d 100644 --- a/services/network/web_bundle/web_bundle_manager.cc +++ b/services/network/web_bundle/web_bundle_manager.cc
@@ -166,14 +166,12 @@ // issue. As of now, this happens only in non-regular cases; the bundle is // blocked by, for example, Chrome Extensions APIs. - it->second.erase(base::ranges::remove_if( - it->second, - [will_be_deleted_url_loader](auto pending_loader) { - return !pending_loader || - pending_loader.get() == - will_be_deleted_url_loader; - }), - it->second.end()); + auto to_remove = std::ranges::remove_if( + it->second, [will_be_deleted_url_loader](auto pending_loader) { + return !pending_loader || + pending_loader.get() == will_be_deleted_url_loader; + }); + it->second.erase(to_remove.begin(), to_remove.end()); if (it->second.empty()) { pending_loaders_.erase(key);
diff --git a/testing/buildbot/filters/pixel_tests.filter b/testing/buildbot/filters/pixel_tests.filter index 221a16a1..ea92e686 100644 --- a/testing/buildbot/filters/pixel_tests.filter +++ b/testing/buildbot/filters/pixel_tests.filter
@@ -84,6 +84,7 @@ *PasswordBubbleBrowserTest.* *PasswordAutomaticSaveBubbleBrowserTest.* *PasswordCrossDomainConfirmationPopupViewBrowsertest.* +*PasswordChangeUiBrowserTest.* *PasswordGenerationPopupViewBrowsertest.* *PasswordGenerationPopupViewWithSoftNudgeBrowsertest.* *PasswordManagementRevampedBubbleInteractiveUiTest.*
diff --git a/testing/libfuzzer/research/fuzzilli_idl_fuzzing/ChromiumProfile.swift.tmpl b/testing/libfuzzer/research/fuzzilli_idl_fuzzing/ChromiumProfile.swift.tmpl index 86d2700b..19ea688 100644 --- a/testing/libfuzzer/research/fuzzilli_idl_fuzzing/ChromiumProfile.swift.tmpl +++ b/testing/libfuzzer/research/fuzzilli_idl_fuzzing/ChromiumProfile.swift.tmpl
@@ -51,7 +51,7 @@ // Insert random GC calls throughout our code. fileprivate let GcGenerator = CodeGenerator("GcGenerator") { b in - let gc = b.loadBuiltin("gc") + let gc = b.createNamedVariable(forBuiltin: "gc") // Do minor GCs more frequently. let type = b.loadString(probability(0.25) ? "major" : "minor")
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index eb4d3d5..0ee033d 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -5063,6 +5063,7 @@ "enable_features": [ "EnableLensOverlay", "IPH_iOSLensOverlayEntrypointTip", + "LensClearcutLoggerFastQosEnabled", "LensOverlayEnableLocationBarEntrypoint" ] } @@ -16067,31 +16068,6 @@ ] } ], - "PartitionAllocAdvancedMemorySafetyChecks": [ - { - "platforms": [ - "android", - "android_webview", - "chromeos", - "fuchsia", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "PartitionAllocSchedulerLoopQuarantineBranchCapacity": "262144" - }, - "enable_features": [ - "PartitionAllocSchedulerLoopQuarantine", - "PartitionAllocZappingByFreeFlags" - ] - } - ] - } - ], "PartitionAllocBackupRefPtr": [ { "platforms": [ @@ -16360,6 +16336,34 @@ ] } ], + "PartitionAllocWithAdvancedChecks": [ + { + "platforms": [ + "android", + "android_webview", + "chromeos", + "fuchsia", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "PartitionAllocSchedulerLoopQuarantineBranchCapacity": "0", + "PartitionAllocSchedulerLoopQuarantineBrowserUICapacity": "262144", + "enabled-processes": "browser-only" + }, + "enable_features": [ + "PartitionAllocSchedulerLoopQuarantine", + "PartitionAllocWithAdvancedChecks", + "PartitionAllocZappingByFreeFlags" + ] + } + ] + } + ], "PartitionNetworkStateByNetworkAnonymizationKey": [ { "platforms": [
diff --git a/third_party/blink/common/renderer_preferences/renderer_preferences_mojom_traits.cc b/third_party/blink/common/renderer_preferences/renderer_preferences_mojom_traits.cc index 7e3790d..25cf6b54 100644 --- a/third_party/blink/common/renderer_preferences/renderer_preferences_mojom_traits.cc +++ b/third_party/blink/common/renderer_preferences/renderer_preferences_mojom_traits.cc
@@ -119,6 +119,10 @@ out->plugin_fullscreen_allowed = data.plugin_fullscreen_allowed(); out->caret_browsing_enabled = data.caret_browsing_enabled(); +#if BUILDFLAG(IS_ANDROID) + out->uses_platform_autofill = data.uses_platform_autofill(); +#endif // BUILDFLAG(IS_ANDROID) + if (!data.ReadExplicitlyAllowedNetworkPorts( &out->explicitly_allowed_network_ports)) { return false;
diff --git a/third_party/blink/public/common/renderer_preferences/renderer_preferences.h b/third_party/blink/public/common/renderer_preferences/renderer_preferences.h index aa95659..cae09639 100644 --- a/third_party/blink/public/common/renderer_preferences/renderer_preferences.h +++ b/third_party/blink/public/common/renderer_preferences/renderer_preferences.h
@@ -89,6 +89,7 @@ #endif bool plugin_fullscreen_allowed{true}; bool caret_browsing_enabled{false}; + bool uses_platform_autofill{false}; std::vector<uint16_t> explicitly_allowed_network_ports; RendererPreferences();
diff --git a/third_party/blink/public/common/renderer_preferences/renderer_preferences_mojom_traits.h b/third_party/blink/public/common/renderer_preferences/renderer_preferences_mojom_traits.h index 605730f..33b4bd3 100644 --- a/third_party/blink/public/common/renderer_preferences/renderer_preferences_mojom_traits.h +++ b/third_party/blink/public/common/renderer_preferences/renderer_preferences_mojom_traits.h
@@ -263,6 +263,13 @@ return data.caret_browsing_enabled; } +#if BUILDFLAG(IS_ANDROID) + static const bool& uses_platform_autofill( + const ::blink::RendererPreferences& data) { + return data.uses_platform_autofill; + } +#endif // BUILDFLAG(IS_ANDROID) + static const std::vector<uint16_t>& explicitly_allowed_network_ports( const ::blink::RendererPreferences& data) { return data.explicitly_allowed_network_ports;
diff --git a/third_party/blink/public/mojom/renderer_preferences.mojom b/third_party/blink/public/mojom/renderer_preferences.mojom index ab7a2f6d..bbcec1d 100644 --- a/third_party/blink/public/mojom/renderer_preferences.mojom +++ b/third_party/blink/public/mojom/renderer_preferences.mojom
@@ -193,5 +193,12 @@ [EnableIf=is_selection_clipboard_buffer_possible] bool selection_clipboard_buffer_available = false; + // Set to true if the renderer should assume that the embedder delegates all + // Autofill activity and requests to the platform instead of providing its + // own implementation. + // Currently only true on Android. + [EnableIf=is_android] + bool uses_platform_autofill = false; + array<uint16> explicitly_allowed_network_ports; };
diff --git a/third_party/blink/renderer/core/css/selector_checker.cc b/third_party/blink/renderer/core/css/selector_checker.cc index 5f4b17fe..312e015 100644 --- a/third_party/blink/renderer/core/css/selector_checker.cc +++ b/third_party/blink/renderer/core/css/selector_checker.cc
@@ -2125,6 +2125,11 @@ } return false; case CSSSelector::kPseudoOpen: + probe::ForcePseudoState(&element, CSSSelector::kPseudoOpen, + &force_pseudo_state); + if (force_pseudo_state) { + return true; + } if (auto* dialog = DynamicTo<HTMLDialogElement>(element)) { return dialog->FastHasAttribute(html_names::kOpenAttr); } else if (auto* details = DynamicTo<HTMLDetailsElement>(element)) {
diff --git a/third_party/blink/renderer/core/inspector/inspector_css_agent.cc b/third_party/blink/renderer/core/inspector/inspector_css_agent.cc index 1053e6c..eaa297c 100644 --- a/third_party/blink/renderer/core/inspector/inspector_css_agent.cc +++ b/third_party/blink/renderer/core/inspector/inspector_css_agent.cc
@@ -284,6 +284,7 @@ kPseudoPlaceholderShown = 1 << 21, kPseudoAutofill = 1 << 22, kPseudoLink = 1 << 23, + kPseudoOpen = 1 << 24, }; static unsigned ComputePseudoClassMask( @@ -313,6 +314,7 @@ DEFINE_STATIC_LOCAL(String, placeholderShown, ("placeholder-shown")); DEFINE_STATIC_LOCAL(String, autofill, ("autofill")); DEFINE_STATIC_LOCAL(String, link, ("link")); + DEFINE_STATIC_LOCAL(String, open, ("open")); if (!pseudo_class_array || pseudo_class_array->empty()) return kPseudoNone; @@ -367,6 +369,8 @@ result |= kPseudoAutofill; } else if (pseudo_class == link) { result |= kPseudoLink; + } else if (pseudo_class == open) { + result |= kPseudoOpen; } } return result; @@ -1080,6 +1084,9 @@ case CSSSelector::kPseudoAutofill: force = forced_pseudo_state & kPseudoAutofill; break; + case CSSSelector::kPseudoOpen: + force = forced_pseudo_state & kPseudoOpen; + break; default: break; }
diff --git a/third_party/blink/renderer/core/layout/anchor_query_map.cc b/third_party/blink/renderer/core/layout/anchor_query_map.cc index 76b2b93..ecd809b 100644 --- a/third_party/blink/renderer/core/layout/anchor_query_map.cc +++ b/third_party/blink/renderer/core/layout/anchor_query_map.cc
@@ -8,12 +8,33 @@ #include "third_party/blink/renderer/core/layout/geometry/writing_mode_converter.h" #include "third_party/blink/renderer/core/layout/inline/inline_cursor.h" #include "third_party/blink/renderer/core/layout/logical_fragment_link.h" +#include "third_party/blink/renderer/core/layout/pagination_utils.h" #include "third_party/blink/renderer/core/layout/physical_box_fragment.h" namespace blink { namespace { +LogicalFragmentLink GetFragmentainerLink( + const LogicalFragmentLink& fragmentation_context_root_child) { + // Multicol: + if (fragmentation_context_root_child->IsColumnBox()) { + return fragmentation_context_root_child; + } + // Pagination: + if (fragmentation_context_root_child->GetBoxType() == + PhysicalFragment::kPageContainer) { + // The fragmentainer is the page area, which is wrapped inside a page border + // box fragment inside a page container fragment. Offsets don't matter here, + // as each page establishes its own coordinate system. + const PhysicalBoxFragment& page_area = GetPageArea(GetPageBorderBox( + *To<PhysicalBoxFragment>(fragmentation_context_root_child.get()))); + return LogicalFragmentLink(page_area, LogicalOffset()); + } + + return LogicalFragmentLink(); +} + // Represents a fragmentainer. This is in the logical coordinate system // for convenience reasons. struct FragmentainerContext { @@ -173,25 +194,24 @@ void AddFragmentainerChildren(base::span<const LogicalFragmentLink> children, WritingDirectionMode writing_direction) { LayoutUnit fragmentainer_stitched_offset; - for (const LogicalFragmentLink& child : children) { - if (child->IsFragmentainerBox()) { - const FragmentainerContext fragmentainer{ - child.offset, - fragmentainer_stitched_offset, - {writing_direction, child->Size()}}; - AddChild(*child, /* offset_from_fragmentainer */ {}, fragmentainer); - fragmentainer_stitched_offset += - child->Size() - .ConvertToLogical(writing_direction.GetWritingMode()) - .block_size; + for (const LogicalFragmentLink& candidate : children) { + LogicalFragmentLink child = GetFragmentainerLink(candidate); + if (!child) { + // Skip the child if it isn't a fragmentainer. This may for instance be + // a column spanner or a list item marker. They are are direct child + // fragments of a multicol container fragment, but do not participate in + // fragmentation. continue; } - // The containing block of the spanner is the multicol container itself. - // https://drafts.csswg.org/css-multicol/#column-span - // So anchor queries in column spanners should not be added to any - // containing blocks in the multicol. - DCHECK(child->IsColumnSpanAll()); + const FragmentainerContext fragmentainer{ + child.offset, + fragmentainer_stitched_offset, + {writing_direction, child->Size()}}; + AddChild(*child, /* offset_from_fragmentainer */ {}, fragmentainer); + if (const auto* token = To<BlockBreakToken>(child->GetBreakToken())) { + fragmentainer_stitched_offset = token->ConsumedBlockSize(); + } } } @@ -226,6 +246,12 @@ EnsureStitchedAnchorQuery(*layout_object) .AddAnchorQuery(fragment, offset_from_fragmentainer, fragmentainer); } + } else if (fragment.GetBoxType() == PhysicalFragment::kPageArea) { + // The initial containing block (LayoutView) is on the outside of the + // fragmentation context, so special attention is required when processing + // page area fragmentainers. + EnsureStitchedAnchorQuery(*fragment.OwnerLayoutBox()) + .AddAnchorQuery(fragment, offset_from_fragmentainer, fragmentainer); } if (fragment.IsFragmentationContextRoot()) { @@ -364,7 +390,8 @@ // To allow early returns, check if any child has anchor queries. has_anchor_queries_ = false; for (const LogicalFragmentLink& child : children) { - if (child->HasAnchorQuery()) { + LogicalFragmentLink fragmentainer = GetFragmentainerLink(child); + if (fragmentainer && fragmentainer->HasAnchorQuery()) { has_anchor_queries_ = true; break; }
diff --git a/third_party/blink/renderer/core/layout/block_node.cc b/third_party/blink/renderer/core/layout/block_node.cc index a9ee68b..bf06f44 100644 --- a/third_party/blink/renderer/core/layout/block_node.cc +++ b/third_party/blink/renderer/core/layout/block_node.cc
@@ -1537,9 +1537,8 @@ } if (!ShouldApplySizeContainment()) { - IntrinsicSizingInfo legacy_sizing_info; - To<LayoutReplaced>(box_.Get()) - ->ComputeIntrinsicSizingInfo(legacy_sizing_info); + const IntrinsicSizingInfo legacy_sizing_info = + To<LayoutReplaced>(*box_).ComputeIntrinsicSizingInfo(); if (!legacy_sizing_info.aspect_ratio.IsEmpty()) { return StyleAspectRatio::LayoutRatioFromSizeF( legacy_sizing_info.aspect_ratio)
diff --git a/third_party/blink/renderer/core/layout/intrinsic_sizing_info.h b/third_party/blink/renderer/core/layout/intrinsic_sizing_info.h index 663bcda..9f3e5b5 100644 --- a/third_party/blink/renderer/core/layout/intrinsic_sizing_info.h +++ b/third_party/blink/renderer/core/layout/intrinsic_sizing_info.h
@@ -17,6 +17,9 @@ static IntrinsicSizingInfo None() { return {gfx::SizeF(), gfx::SizeF(), false, false}; } + static IntrinsicSizingInfo MakeFixed(const gfx::SizeF& natural_size) { + return {natural_size, natural_size, true, true}; + } bool IsNone() const { return !has_width && !has_height && aspect_ratio.IsEmpty();
diff --git a/third_party/blink/renderer/core/layout/layout_embedded_object.cc b/third_party/blink/renderer/core/layout/layout_embedded_object.cc index bc7821a..c73cc12 100644 --- a/third_party/blink/renderer/core/layout/layout_embedded_object.cc +++ b/third_party/blink/renderer/core/layout/layout_embedded_object.cc
@@ -97,18 +97,22 @@ GetFrameView()->AddPartToUpdate(*this); } -void LayoutEmbeddedObject::ComputeIntrinsicSizingInfo( - IntrinsicSizingInfo& intrinsic_sizing_info) const { +IntrinsicSizingInfo LayoutEmbeddedObject::GetNaturalDimensions() const { + NOT_DESTROYED(); + IntrinsicSizingInfo sizing_info; + FrameView* frame_view = ChildFrameView(); + if (frame_view && frame_view->GetIntrinsicSizingInfo(sizing_info)) { + // Scale based on our zoom as the embedded document doesn't have that info. + sizing_info.size.Scale(StyleRef().EffectiveZoom()); + return sizing_info; + } + return LayoutEmbeddedContent::GetNaturalDimensions(); +} + +IntrinsicSizingInfo LayoutEmbeddedObject::ComputeIntrinsicSizingInfo() const { NOT_DESTROYED(); DCHECK(!ShouldApplySizeContainment()); - FrameView* frame_view = ChildFrameView(); - if (frame_view && frame_view->GetIntrinsicSizingInfo(intrinsic_sizing_info)) { - // Scale based on our zoom as the embedded document doesn't have that info. - intrinsic_sizing_info.size.Scale(StyleRef().EffectiveZoom()); - return; - } - - LayoutEmbeddedContent::ComputeIntrinsicSizingInfo(intrinsic_sizing_info); + return GetNaturalDimensions(); } } // namespace blink
diff --git a/third_party/blink/renderer/core/layout/layout_embedded_object.h b/third_party/blink/renderer/core/layout/layout_embedded_object.h index df39d5ff..9b40f9db 100644 --- a/third_party/blink/renderer/core/layout/layout_embedded_object.h +++ b/third_party/blink/renderer/core/layout/layout_embedded_object.h
@@ -63,7 +63,8 @@ NOT_DESTROYED(); return true; } - void ComputeIntrinsicSizingInfo(IntrinsicSizingInfo&) const override; + IntrinsicSizingInfo GetNaturalDimensions() const override; + IntrinsicSizingInfo ComputeIntrinsicSizingInfo() const override; PluginAvailability plugin_availability_ = kPluginAvailable; String unavailable_plugin_replacement_text_;
diff --git a/third_party/blink/renderer/core/layout/layout_image.cc b/third_party/blink/renderer/core/layout/layout_image.cc index f8d54150..402a444 100644 --- a/third_party/blink/renderer/core/layout/layout_image.cc +++ b/third_party/blink/renderer/core/layout/layout_image.cc
@@ -345,40 +345,33 @@ return info.has_width && info.has_height; } -void LayoutImage::ComputeIntrinsicSizingInfo( - IntrinsicSizingInfo& intrinsic_sizing_info) const { +IntrinsicSizingInfo LayoutImage::GetNaturalDimensions() const { NOT_DESTROYED(); - DCHECK(!ShouldApplySizeContainment()); + IntrinsicSizingInfo sizing_info; if (EmbeddedSVGImage()) { - intrinsic_sizing_info = + sizing_info = image_resource_->GetNaturalDimensions(StyleRef().EffectiveZoom()); - if (auto view_box = ComputeObjectViewBoxRect()) { - DCHECK(intrinsic_sizing_info.has_width); - DCHECK(intrinsic_sizing_info.has_height); - intrinsic_sizing_info.size = gfx::SizeF(view_box->size); - } - // The value returned by LayoutImageResource will be in zoomed CSS // pixels, but for the 'scale-down' object-fit value we want "zoomed // device pixels", so undo the DPR part here. if (StyleRef().GetObjectFit() == EObjectFit::kScaleDown) { - intrinsic_sizing_info.size.InvScale(ImageDevicePixelRatio()); + sizing_info.size.InvScale(ImageDevicePixelRatio()); } - return; - } + } else { + sizing_info = LayoutReplaced::GetNaturalDimensions(); - LayoutReplaced::ComputeIntrinsicSizingInfo(intrinsic_sizing_info); - - // Don't compute an intrinsic ratio to preserve historical WebKit behavior if - // we're painting alt text and/or a broken image. - // Video is excluded from this behavior because video elements have a default - // aspect ratio that a failed poster image load should not override. - if (image_resource_ && image_resource_->ErrorOccurred() && - !IsA<LayoutVideo>(this)) { - intrinsic_sizing_info.aspect_ratio = gfx::SizeF(1, 1); - return; + // Don't compute an intrinsic ratio to preserve historical WebKit behavior + // if we're painting alt text and/or a broken image. + // Video is excluded from this behavior because video elements have a + // default aspect ratio that a failed poster image load should not + // override. + if (image_resource_ && image_resource_->ErrorOccurred() && + !IsA<LayoutVideo>(this)) { + sizing_info.aspect_ratio = gfx::SizeF(1, 1); + } } + return sizing_info; } SVGImage* LayoutImage::EmbeddedSVGImage() const {
diff --git a/third_party/blink/renderer/core/layout/layout_image.h b/third_party/blink/renderer/core/layout/layout_image.h index 77e2ca8..bb21594 100644 --- a/third_party/blink/renderer/core/layout/layout_image.h +++ b/third_party/blink/renderer/core/layout/layout_image.h
@@ -124,7 +124,7 @@ protected: SVGImage* EmbeddedSVGImage() const; bool CanApplyObjectViewBox() const override; - void ComputeIntrinsicSizingInfo(IntrinsicSizingInfo&) const override; + IntrinsicSizingInfo GetNaturalDimensions() const override; void ImageChanged(WrappedImagePtr, CanDeferInvalidation) override;
diff --git a/third_party/blink/renderer/core/layout/layout_input_node.cc b/third_party/blink/renderer/core/layout/layout_input_node.cc index b50343d..ca6d725 100644 --- a/third_party/blink/renderer/core/layout/layout_input_node.cc +++ b/third_party/blink/renderer/core/layout/layout_input_node.cc
@@ -157,9 +157,8 @@ if (*computed_inline_size && *computed_block_size) return; - IntrinsicSizingInfo legacy_sizing_info; - To<LayoutReplaced>(box_.Get()) - ->ComputeIntrinsicSizingInfo(legacy_sizing_info); + const IntrinsicSizingInfo legacy_sizing_info = + To<LayoutReplaced>(*box_).ComputeIntrinsicSizingInfo(); std::optional<LayoutUnit> intrinsic_inline_size = legacy_sizing_info.has_width
diff --git a/third_party/blink/renderer/core/layout/layout_replaced.cc b/third_party/blink/renderer/core/layout/layout_replaced.cc index 4d65ef7..07a56b3 100644 --- a/third_party/blink/renderer/core/layout/layout_replaced.cc +++ b/third_party/blink/renderer/core/layout/layout_replaced.cc
@@ -343,6 +343,21 @@ return final_rect; } +void LayoutReplaced::ApplyObjectViewBox( + IntrinsicSizingInfo& sizing_info) const { + if (!sizing_info.has_width || !sizing_info.has_height) { + return; + } + const PhysicalSize natural_size = + PhysicalSize::FromSizeFRound(sizing_info.size); + if (auto view_box = ComputeObjectViewBoxRect(&natural_size)) { + sizing_info.size = gfx::SizeF(view_box->size); + if (!sizing_info.aspect_ratio.IsEmpty()) { + sizing_info.aspect_ratio = sizing_info.size; + } + } +} + PhysicalRect LayoutReplaced::ReplacedContentRect() const { NOT_DESTROYED(); // This function should compute the result with old geometry even if a @@ -361,23 +376,24 @@ return PhysicalRect(rect.offset, PhysicalSize(ToRoundedSize(rect.size))); } -void LayoutReplaced::ComputeIntrinsicSizingInfo( - IntrinsicSizingInfo& intrinsic_sizing_info) const { +IntrinsicSizingInfo LayoutReplaced::GetNaturalDimensions() const { + NOT_DESTROYED(); + IntrinsicSizingInfo sizing_info; + sizing_info.size = gfx::SizeF(IntrinsicSize()); + + // Set a natural aspect ratio if the object should have one. + if (LayoutObjectHasIntrinsicAspectRatio(this)) { + sizing_info.aspect_ratio = sizing_info.size; + } + return sizing_info; +} + +IntrinsicSizingInfo LayoutReplaced::ComputeIntrinsicSizingInfo() const { NOT_DESTROYED(); DCHECK(!ShouldApplySizeContainment()); - - if (auto view_box = ComputeObjectViewBoxRect()) { - intrinsic_sizing_info.size = gfx::SizeF(view_box->size); - } else { - intrinsic_sizing_info.size = gfx::SizeF(IntrinsicSize()); - } - - // Figure out if we need to compute an intrinsic ratio. - if (!LayoutObjectHasIntrinsicAspectRatio(this)) - return; - - if (!intrinsic_sizing_info.size.IsEmpty()) - intrinsic_sizing_info.aspect_ratio = intrinsic_sizing_info.size; + IntrinsicSizingInfo sizing_info = GetNaturalDimensions(); + ApplyObjectViewBox(sizing_info); + return sizing_info; } static std::pair<LayoutUnit, LayoutUnit> SelectionTopAndBottom(
diff --git a/third_party/blink/renderer/core/layout/layout_replaced.h b/third_party/blink/renderer/core/layout/layout_replaced.h index e3aebc6b..3898dcc 100644 --- a/third_party/blink/renderer/core/layout/layout_replaced.h +++ b/third_party/blink/renderer/core/layout/layout_replaced.h
@@ -102,9 +102,13 @@ void Paint(const PaintInfo&) const override; + // Compute the natural dimensions of the replaced content. Should not apply + // any additional transformations (like 'object-view-box'). + virtual IntrinsicSizingInfo GetNaturalDimensions() const; + // This function is public only so we can call it when computing // intrinsic size in LayoutNG. - virtual void ComputeIntrinsicSizingInfo(IntrinsicSizingInfo&) const; + virtual IntrinsicSizingInfo ComputeIntrinsicSizingInfo() const; // This callback must be invoked whenever the underlying intrinsic size has // changed. @@ -125,6 +129,9 @@ NOT_DESTROYED(); return true; } + // Applies a 'object-view-box' (if present) to the provided natural + // dimensions. + void ApplyObjectViewBox(IntrinsicSizingInfo&) const; bool IsInSelfHitTestingPhase(HitTestPhase phase) const override { NOT_DESTROYED();
diff --git a/third_party/blink/renderer/core/layout/layout_video.cc b/third_party/blink/renderer/core/layout/layout_video.cc index 2a0c5756..fc983b9 100644 --- a/third_party/blink/renderer/core/layout/layout_video.cc +++ b/third_party/blink/renderer/core/layout/layout_video.cc
@@ -32,14 +32,8 @@ namespace blink { -namespace { - -const float kInitEffectZoom = 1.0f; - -} // namespace - LayoutVideo::LayoutVideo(HTMLVideoElement* video) : LayoutMedia(video) { - SetIntrinsicSize(CalculateIntrinsicSize(kInitEffectZoom)); + SetIntrinsicSize(DefaultSize()); } LayoutVideo::~LayoutVideo() = default; @@ -58,12 +52,13 @@ void LayoutVideo::UpdateIntrinsicSize() { NOT_DESTROYED(); - PhysicalSize size = CalculateIntrinsicSize(StyleRef().EffectiveZoom()); + const IntrinsicSizingInfo sizing_info = GetNaturalDimensions(); + PhysicalSize size = PhysicalSize::FromSizeFRound(sizing_info.size); // Never set the element size to zero when in a media document. - if (size.IsEmpty() && GetNode()->ownerDocument() && - GetNode()->ownerDocument()->IsMediaDocument()) + if (size.IsEmpty() && GetDocument().IsMediaDocument()) { return; + } if (size == IntrinsicSize()) return; @@ -74,47 +69,46 @@ layout_invalidation_reason::kSizeChanged); } -PhysicalSize LayoutVideo::CalculateIntrinsicSize(float scale) { +IntrinsicSizingInfo LayoutVideo::GetNaturalDimensions() const { NOT_DESTROYED(); - HTMLVideoElement* video = VideoElement(); - DCHECK(video); auto display_mode = GetDisplayMode(); + const auto* video = VideoElement(); // Special case: If the poster image is the "default poster image", we should - // NOT use that for calculating intrinsic size. - // TODO(1190335): Remove this once default poster image is removed + // NOT use that for calculating natural dimensions. + // TODO: crbug.com/40174114 - Remove this once default poster image is + // removed. if (display_mode == kPoster && video->IsDefaultPosterImageURL()) { display_mode = kVideo; } + // This implements the intrinsic width/height calculation from: + // https://html.spec.whatwg.org/#the-video-element:dimension-attributes:~:text=The%20intrinsic%20width%20of%20a%20video%20element's%20playback%20area switch (display_mode) { - // This implements the intrinsic width/height calculation from: - // https://html.spec.whatwg.org/#the-video-element:dimension-attributes:~:text=The%20intrinsic%20width%20of%20a%20video%20element's%20playback%20area - // If the video playback area is currently represented by the poster image, - // the intrinsic width and height are that of the poster image. case kPoster: + // If the video playback area is currently represented by the poster + // image, the natural dimensions are that of the poster image. if (!cached_image_size_.IsEmpty() && !ImageResource()->ErrorOccurred()) { - return cached_image_size_; + return IntrinsicSizingInfo::MakeFixed(gfx::SizeF(cached_image_size_)); } break; - // Otherwise, the intrinsic width is that of the video. case kVideo: - if (const auto* player = MediaElement()->GetWebMediaPlayer()) { - gfx::Size size = player->NaturalSize(); - if (!size.IsEmpty()) { - PhysicalSize layout_size = PhysicalSize(size); - layout_size.Scale(scale); - return layout_size; + // Otherwise, the natural dimensions are that of the video. + if (const auto* player = video->GetWebMediaPlayer()) { + gfx::Size video_size = player->NaturalSize(); + if (!video_size.IsEmpty()) { + return IntrinsicSizingInfo::MakeFixed(gfx::ScaleSize( + gfx::SizeF(video_size), StyleRef().EffectiveZoom())); } } break; } - PhysicalSize size = DefaultSize(); - size.Scale(scale); - return size; + // Natural dimensions are missing. + return IntrinsicSizingInfo::MakeFixed( + gfx::ScaleSize(gfx::SizeF(DefaultSize()), StyleRef().EffectiveZoom())); } void LayoutVideo::ImageChanged(WrappedImagePtr new_image,
diff --git a/third_party/blink/renderer/core/layout/layout_video.h b/third_party/blink/renderer/core/layout/layout_video.h index f668c61..3625a3f 100644 --- a/third_party/blink/renderer/core/layout/layout_video.h +++ b/third_party/blink/renderer/core/layout/layout_video.h
@@ -71,7 +71,7 @@ void UpdateFromElement() final; void InvalidateCompositing(); - PhysicalSize CalculateIntrinsicSize(float scale); + IntrinsicSizingInfo GetNaturalDimensions() const override; void UpdateIntrinsicSize(); void ImageChanged(WrappedImagePtr, CanDeferInvalidation) override;
diff --git a/third_party/blink/renderer/core/layout/list/layout_list_marker_image.cc b/third_party/blink/renderer/core/layout/list/layout_list_marker_image.cc index 86b8cee..29ea178 100644 --- a/third_party/blink/renderer/core/layout/list/layout_list_marker_image.cc +++ b/third_party/blink/renderer/core/layout/list/layout_list_marker_image.cc
@@ -5,8 +5,6 @@ #include "third_party/blink/renderer/core/layout/list/layout_list_marker_image.h" #include "third_party/blink/renderer/core/layout/intrinsic_sizing_info.h" -#include "third_party/blink/renderer/core/layout/list/layout_list_item.h" -#include "third_party/blink/renderer/core/svg/graphics/svg_image.h" namespace blink { @@ -23,7 +21,7 @@ gfx::SizeF LayoutListMarkerImage::DefaultSize() const { NOT_DESTROYED(); - const SimpleFontData* font_data = Style()->GetFont().PrimaryFont(); + const SimpleFontData* font_data = StyleRef().GetFont().PrimaryFont(); DCHECK(font_data); if (!font_data) return gfx::SizeF(kDefaultWidth, kDefaultHeight); @@ -31,31 +29,23 @@ return gfx::SizeF(bullet_width, bullet_width); } -// Because ImageResource() is always LayoutImageResourceStyleImage. So we could -// use StyleImage::ImageSize to determine the concrete object size with -// default object size(ascent/2 x ascent/2). -void LayoutListMarkerImage::ComputeIntrinsicSizingInfoByDefaultSize( - IntrinsicSizingInfo& intrinsic_sizing_info) const { +IntrinsicSizingInfo LayoutListMarkerImage::GetNaturalDimensions() const { NOT_DESTROYED(); - gfx::SizeF concrete_size = ImageResource()->ConcreteObjectSize( - Style()->EffectiveZoom(), DefaultSize()); - concrete_size.Scale(ImageDevicePixelRatio()); + IntrinsicSizingInfo sizing_info = LayoutImage::GetNaturalDimensions(); - intrinsic_sizing_info.size = concrete_size; - intrinsic_sizing_info.has_width = true; - intrinsic_sizing_info.has_height = true; -} + // If this is an image without natural width and height, compute the concrete + // object size by using the specified default object size. + if (sizing_info.size.IsEmpty()) { + // Because ImageResource() is always LayoutImageResourceStyleImage. So we + // could use StyleImage::ImageSize to determine the concrete object size + // with default object size(ascent/2 x ascent/2). + gfx::SizeF concrete_size = ImageResource()->ConcreteObjectSize( + StyleRef().EffectiveZoom(), DefaultSize()); + concrete_size.Scale(ImageDevicePixelRatio()); -void LayoutListMarkerImage::ComputeIntrinsicSizingInfo( - IntrinsicSizingInfo& intrinsic_sizing_info) const { - NOT_DESTROYED(); - LayoutImage::ComputeIntrinsicSizingInfo(intrinsic_sizing_info); - - // If this is an image without intrinsic width and height, compute the - // concrete object size by using the specified default object size. - if (intrinsic_sizing_info.size.IsEmpty()) { - ComputeIntrinsicSizingInfoByDefaultSize(intrinsic_sizing_info); + sizing_info = IntrinsicSizingInfo::MakeFixed(concrete_size); } + return sizing_info; } } // namespace blink
diff --git a/third_party/blink/renderer/core/layout/list/layout_list_marker_image.h b/third_party/blink/renderer/core/layout/list/layout_list_marker_image.h index f871c3c..09395853 100644 --- a/third_party/blink/renderer/core/layout/list/layout_list_marker_image.h +++ b/third_party/blink/renderer/core/layout/list/layout_list_marker_image.h
@@ -29,8 +29,7 @@ return true; } - void ComputeIntrinsicSizingInfoByDefaultSize(IntrinsicSizingInfo&) const; - void ComputeIntrinsicSizingInfo(IntrinsicSizingInfo&) const final; + IntrinsicSizingInfo GetNaturalDimensions() const override; }; template <>
diff --git a/third_party/blink/renderer/core/layout/logical_fragment_link.h b/third_party/blink/renderer/core/layout/logical_fragment_link.h index 0baaca7a..d388908 100644 --- a/third_party/blink/renderer/core/layout/logical_fragment_link.h +++ b/third_party/blink/renderer/core/layout/logical_fragment_link.h
@@ -19,6 +19,7 @@ DISALLOW_NEW(); public: + LogicalFragmentLink() = default; LogicalFragmentLink(const PhysicalFragment& fragment, LogicalOffset offset) : fragment(&fragment), offset(offset) {}
diff --git a/third_party/blink/renderer/core/layout/out_of_flow_layout_part.cc b/third_party/blink/renderer/core/layout/out_of_flow_layout_part.cc index 925087d..70bc81c 100644 --- a/third_party/blink/renderer/core/layout/out_of_flow_layout_part.cc +++ b/third_party/blink/renderer/core/layout/out_of_flow_layout_part.cc
@@ -1354,8 +1354,8 @@ // Layout the OOF positioned elements inside the inner multicol. OutOfFlowLayoutPart inner_part(&limited_multicol_container_builder); - inner_part.outer_container_builder_ = - outer_container_builder_ ? outer_container_builder_ : container_builder_; + inner_part.outer_oof_layout_part_ = + outer_oof_layout_part_ ? outer_oof_layout_part_ : this; inner_part.LayoutFragmentainerDescendants( &oof_nodes_to_layout, fragmentainer_progression, multicol_info->fixedpos_containing_block.Fragment(), &multicol_children); @@ -1448,8 +1448,8 @@ outer_context_has_fixedpos_container_ = outer_context_has_fixedpos_container; DCHECK(multicol_children_ || !outer_context_has_fixedpos_container_); - BoxFragmentBuilder* builder_for_anchor_query = container_builder_; - if (outer_container_builder_) { + OutOfFlowLayoutPart* layout_part_for_anchor_query = this; + if (outer_oof_layout_part_) { // If this is an inner layout of the nested block fragmentation, and if this // block fragmentation context is block fragmented, |multicol_children| // doesn't have correct block offsets of fragmentainers anchor query needs. @@ -1457,15 +1457,18 @@ // instead in order to get the correct offsets. for (const MulticolChildInfo& multicol_child : *multicol_children) { if (multicol_child.parent_break_token) { - builder_for_anchor_query = outer_container_builder_; + layout_part_for_anchor_query = outer_oof_layout_part_; break; } } } + + BoxFragmentBuilder* builder_for_anchor_query = + layout_part_for_anchor_query->container_builder_; StitchedAnchorQueries stitched_anchor_queries( *builder_for_anchor_query->Node().GetLayoutBox(), builder_for_anchor_query->SizeForAnchorQueries(), - builder_for_anchor_query->Children(), + layout_part_for_anchor_query->FragmentationContextChildren(), builder_for_anchor_query->GetWritingDirection()); const bool may_have_anchors_on_oof = @@ -1690,7 +1693,7 @@ // them out, if OOFs have anchors, update the anchor queries. if (may_have_anchors_on_oof) { stitched_anchor_queries.SetChildren( - builder_for_anchor_query->Children()); + layout_part_for_anchor_query->FragmentationContextChildren()); } }
diff --git a/third_party/blink/renderer/core/layout/out_of_flow_layout_part.h b/third_party/blink/renderer/core/layout/out_of_flow_layout_part.h index 8585211..4688a21b 100644 --- a/third_party/blink/renderer/core/layout/out_of_flow_layout_part.h +++ b/third_party/blink/renderer/core/layout/out_of_flow_layout_part.h
@@ -444,9 +444,9 @@ const BlockBreakToken* PreviousFragmentainerBreakToken(wtf_size_t) const; BoxFragmentBuilder* container_builder_; - // The builder for the outer block fragmentation context when this is an inner - // layout of nested block fragmentation. - BoxFragmentBuilder* outer_container_builder_ = nullptr; + // The OutOfFlowLayoutPart for the outer block fragmentation context when this + // is an inner layout of nested block fragmentation. + OutOfFlowLayoutPart* outer_oof_layout_part_ = nullptr; ContainingBlockInfo default_containing_block_info_for_absolute_; ContainingBlockInfo default_containing_block_info_for_fixed_; HeapHashMap<Member<const LayoutObject>, ContainingBlockInfo>
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_root.cc b/third_party/blink/renderer/core/layout/svg/layout_svg_root.cc index 0cd091f5..3928a42 100644 --- a/third_party/blink/renderer/core/layout/svg/layout_svg_root.cc +++ b/third_party/blink/renderer/core/layout/svg/layout_svg_root.cc
@@ -95,13 +95,19 @@ } } -void LayoutSVGRoot::ComputeIntrinsicSizingInfo( - IntrinsicSizingInfo& intrinsic_sizing_info) const { +IntrinsicSizingInfo LayoutSVGRoot::GetNaturalDimensions() const { + NOT_DESTROYED(); + IntrinsicSizingInfo sizing_info; + UnscaledIntrinsicSizingInfo(sizing_info); + + sizing_info.size.Scale(StyleRef().EffectiveZoom()); + return sizing_info; +} + +IntrinsicSizingInfo LayoutSVGRoot::ComputeIntrinsicSizingInfo() const { NOT_DESTROYED(); DCHECK(!ShouldApplySizeContainment()); - UnscaledIntrinsicSizingInfo(intrinsic_sizing_info); - - intrinsic_sizing_info.size.Scale(StyleRef().EffectiveZoom()); + return GetNaturalDimensions(); } bool LayoutSVGRoot::IsEmbeddedThroughSVGImage() const {
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_root.h b/third_party/blink/renderer/core/layout/svg/layout_svg_root.h index b140a51..20d5906 100644 --- a/third_party/blink/renderer/core/layout/svg/layout_svg_root.h +++ b/third_party/blink/renderer/core/layout/svg/layout_svg_root.h
@@ -141,7 +141,8 @@ return true; } - void ComputeIntrinsicSizingInfo(IntrinsicSizingInfo&) const override; + IntrinsicSizingInfo GetNaturalDimensions() const override; + IntrinsicSizingInfo ComputeIntrinsicSizingInfo() const override; void PaintReplaced(const PaintInfo&, const PhysicalOffset& paint_offset) const override;
diff --git a/third_party/blink/renderer/platform/graphics/canvas_resource_provider.cc b/third_party/blink/renderer/platform/graphics/canvas_resource_provider.cc index 310d7c56a..3a2e27a0 100644 --- a/third_party/blink/renderer/platform/graphics/canvas_resource_provider.cc +++ b/third_party/blink/renderer/platform/graphics/canvas_resource_provider.cc
@@ -845,18 +845,17 @@ gfx::Size size, SkColorType sk_color_type, SkAlphaType alpha_type, - sk_sp<SkColorSpace> sk_color_space, + const gfx::ColorSpace& color_space, base::WeakPtr<WebGraphicsContext3DProviderWrapper> context_provider_wrapper, CanvasResourceHost* resource_host) - : CanvasResourceProvider( - kPassThrough, - size, - sk_color_type, - alpha_type, - SkColorSpaceToGfxColorSpace(std::move(sk_color_space)), - std::move(context_provider_wrapper), - resource_host) {} + : CanvasResourceProvider(kPassThrough, + size, + sk_color_type, + alpha_type, + color_space, + std::move(context_provider_wrapper), + resource_host) {} ~CanvasResourceProviderPassThrough() override = default; bool IsValid() const final { return true; } @@ -896,28 +895,24 @@ gfx::Size size, SkColorType sk_color_type, SkAlphaType alpha_type, - sk_sp<SkColorSpace> sk_color_space, + const gfx::ColorSpace& color_space, base::WeakPtr<WebGraphicsContext3DProviderWrapper> context_provider_wrapper, CanvasResourceHost* resource_host) - : CanvasResourceProvider( - kSwapChain, - size, - sk_color_type, - alpha_type, - SkColorSpaceToGfxColorSpace(std::move(sk_color_space)), - std::move(context_provider_wrapper), - resource_host), + : CanvasResourceProvider(kSwapChain, + size, + sk_color_type, + alpha_type, + color_space, + std::move(context_provider_wrapper), + resource_host), use_oop_rasterization_(ContextProviderWrapper() ->ContextProvider() .GetCapabilities() .gpu_rasterization) { resource_ = CanvasResourceSwapChain::Create( size, viz::SkColorTypeToSinglePlaneSharedImageFormat(sk_color_type), - alpha_type, - SkColorSpaceToGfxColorSpace( - GetSkImageInfo().colorInfo().refColorSpace()), - ContextProviderWrapper(), CreateWeakPtr()); + alpha_type, color_space, ContextProviderWrapper(), CreateWeakPtr()); // CanvasResourceProviderSwapChain can only operate in a single buffered // mode so enable it as soon as possible. TryEnableSingleBuffering(); @@ -1273,7 +1268,8 @@ // fact that it simply delegates the internal parts of the resource to other // classes). auto provider = std::make_unique<CanvasResourceProviderPassThrough>( - size, sk_color_type, alpha_type, std::move(sk_color_space), + size, sk_color_type, alpha_type, + SkColorSpaceToGfxColorSpace(std::move(sk_color_space)), context_provider_wrapper, resource_host); CHECK(provider->IsValid()); return provider; @@ -1308,7 +1304,8 @@ } auto provider = std::make_unique<CanvasResourceProviderSwapChain>( - size, sk_color_type, alpha_type, std::move(sk_color_space), + size, sk_color_type, alpha_type, + SkColorSpaceToGfxColorSpace(std::move(sk_color_space)), context_provider_wrapper, resource_host); if (provider->IsValid()) { if (should_initialize ==
diff --git a/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.cc b/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.cc index e52e4a5d..23b0a2f 100644 --- a/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.cc +++ b/third_party/blink/renderer/platform/graphics/gpu/drawing_buffer.cc
@@ -430,29 +430,28 @@ return false; } - if (!IsUsingGpuCompositing()) { - return FinishPrepareTransferableResourceSoftware(out_resource, - out_release_callback); + if (IsUsingGpuCompositing()) { + gpu::SyncToken sync_token; + auto shared_image = + ExportSharedImageFromBackBuffer(sync_token, out_release_callback); + if (!shared_image) { + return false; + } + + // Populate the output TransferableResource from the SharedImage. + *out_resource = viz::TransferableResource::MakeGpu( + shared_image, shared_image->GetTextureTarget(), sync_token, + shared_image->size(), shared_image->format(), + shared_image->usage().Has(gpu::SHARED_IMAGE_USAGE_SCANOUT), + viz::TransferableResource::ResourceSource::kDrawingBuffer); + out_resource->color_space = shared_image->color_space(); + out_resource->hdr_metadata = hdr_metadata_; + out_resource->origin = shared_image->surface_origin(); + return true; } - gpu::SyncToken sync_token; - auto shared_image = - ExportSharedImageFromBackBuffer(sync_token, out_release_callback); - if (!shared_image) { - return false; - } - - // Populate the output TransferableResource from the SharedImage. - *out_resource = viz::TransferableResource::MakeGpu( - shared_image, shared_image->GetTextureTarget(), sync_token, - shared_image->size(), shared_image->format(), - shared_image->usage().Has(gpu::SHARED_IMAGE_USAGE_SCANOUT), - viz::TransferableResource::ResourceSource::kDrawingBuffer); - out_resource->color_space = shared_image->color_space(); - out_resource->hdr_metadata = hdr_metadata_; - out_resource->origin = shared_image->surface_origin(); - - return true; + return FinishPrepareTransferableResourceSoftware(out_resource, + out_release_callback); } DrawingBuffer::CheckForDestructionResult
diff --git a/third_party/blink/renderer/platform/peerconnection/webrtc_video_track_source.cc b/third_party/blink/renderer/platform/peerconnection/webrtc_video_track_source.cc index 92852fd..e8dc3279 100644 --- a/third_party/blink/renderer/platform/peerconnection/webrtc_video_track_source.cc +++ b/third_party/blink/renderer/platform/peerconnection/webrtc_video_track_source.cc
@@ -215,7 +215,8 @@ adapter_resources_->GetFeedback().require_mapped_frame, "HasMappableGmb", current_frame->HasMappableGpuBuffer(), "AsyncMappingIsNonBlocking", - current_frame->AsyncMappingIsNonBlocking()); + current_frame->HasMappableGpuBuffer() && + current_frame->AsyncMappingIsNonBlocking()); // Map the GMB here if we know that the mapped image is required downstream. // If the feedback has reached the capturer, this is a no-op as the frame is // premapped. Otherwise it moves the mapping out of the encode operation,
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 index eac1e61..410d4b2 100644 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -2483,7 +2483,6 @@ { // Improved support for debugging CSSNestedDeclarations. name: "InspectorGhostRules", - status: "stable", }, { name: "InstalledApp",
diff --git a/third_party/blink/web_tests/MSANExpectations b/third_party/blink/web_tests/MSANExpectations index 4a21df0..d8b3a1cc 100644 --- a/third_party/blink/web_tests/MSANExpectations +++ b/third_party/blink/web_tests/MSANExpectations
@@ -139,3 +139,14 @@ crbug.com/388428511 [ Linux ] external/wpt/webrtc/protocol/crypto-suite.https.html [ Failure Pass ] crbug.com/388428511 [ Linux ] external/wpt/wasm/core/simd/simd_f32x4_pmin_pmax.wast.js.html [ Failure Pass ] crbug.com/388428511 [ Linux ] external/wpt/wasm/core/simd/simd_f64x2_pmin_pmax.wast.js.html [ Failure Pass ] + +# Gardener 2025-01-10 +# Very slow under MSAN. Similar to crbug.com/40948871. +crbug.com/389039349 [ Linux ] external/wpt/IndexedDB/nested-cloning-large-multiple.any.html [ Skip ] +crbug.com/389039349 [ Linux ] external/wpt/IndexedDB/nested-cloning-large-multiple.any.serviceworker.html [ Skip ] +crbug.com/389039349 [ Linux ] external/wpt/IndexedDB/nested-cloning-large-multiple.any.sharedworker.html [ Skip ] +crbug.com/389039349 [ Linux ] external/wpt/IndexedDB/nested-cloning-large-multiple.any.worker.html [ Skip ] +crbug.com/389039349 [ Linux ] external/wpt/IndexedDB/nested-cloning-large.any.html [ Skip ] +crbug.com/389039349 [ Linux ] external/wpt/IndexedDB/nested-cloning-large.any.serviceworker.html [ Skip ] +crbug.com/389039349 [ Linux ] external/wpt/IndexedDB/nested-cloning-large.any.sharedworker.html [ Skip ] +crbug.com/389039349 [ Linux ] external/wpt/IndexedDB/nested-cloning-large.any.worker.html [ Skip ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations index 91f2bee..c6402dc6 100644 --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations
@@ -1471,13 +1471,9 @@ # Bug in <select multiple> tap behavior: crbug.com/1045672 fast/forms/select/listbox-tap.html [ Failure ] -# Flipping the kill switch on this feature. -crbug.com/379516109 external/wpt/ai/language_detection/capabilities.tentative.https.any.html [ Failure Timeout ] -crbug.com/379516109 external/wpt/ai/language_detection/capabilities.tentative.https.any.worker.html [ Crash Failure Timeout ] - -# Under development, passes with --no-sandbox. See also https://crbug.com/379516109 -crbug.com/354069716 external/wpt/ai/language_detection/detector.https.tentative.any.html [ Failure Timeout ] -crbug.com/354069716 external/wpt/ai/language_detection/detector.https.tentative.any.worker.html [ Crash Failure Timeout ] +# The following language_detection tests are currently tested in the optimization_guide bot so as to download +# the language detection model. +crbug.com/379516109 external/wpt/ai/language_detection/* [ Failure Timeout ] # Failing on Win ARM crbug.com/379233932 [ Win11-arm64 ] external/wpt/ai/translator/* [ Skip Timeout ] @@ -8630,13 +8626,12 @@ crbug.com/324441376 [ Linux ] virtual/threaded-prefer-compositing/fast/scrolling/scrollbars/mouse-scrolling-on-root-scrollbar.html [ Failure Pass ] # Temporarily disabled to unblock https://crrev.com/c/6157257 -crbug.com/388445687 http/tests/devtools/a11y-axe-core/elements/event-listeners-a11y-test.js [ Failure Pass ] -crbug.com/388445687 http/tests/devtools/a11y-axe-core/performance/panel-right-toolbar-a11y-test.js [ Failure Pass ] -crbug.com/388445687 http/tests/devtools/a11y-axe-core/performance/panel-toolbar-a11y-test.js [ Failure Pass ] -crbug.com/388445687 http/tests/devtools/elements/styles-4/style-update-during-selector-edit.js [ Failure Pass ] crbug.com/388445687 http/tests/devtools/console/console-copy-treeoutline.js [ Failure Pass ] crbug.com/388445687 http/tests/devtools/console/console-viewport-selection.js [ Failure Pass ] +# Temporarily disabled to unblock https://crrev.com/c/6164904 +crbug.com/388445687 http/tests/devtools/a11y-axe-core/performance/settings-pane-a11y-test.js [ Failure Pass ] + # Gardener 2024-06-28 crbug.com/349938120 [ Linux ] wpt_internal/webmidi/requestmidiaccess-basic.https.html [ Failure Pass ] @@ -9074,3 +9069,6 @@ # TODO(crrev.com/c/6159568): Re-enable after landing CL. crbug.com/388589515 http/tests/devtools/profiler/heap-snapshot-summary-sorting.js [ Failure Skip ] crbug.com/388589515 http/tests/devtools/profiler/heap-snapshot-summary-show-ranges.js [ Failure Skip ] + +# Gardener 2025-01-10 +crbug.com/389012014 [ Mac13 ] fast/peerconnection/RTCRtpSender-getParameters.html [ Pass Timeout ]
diff --git a/third_party/blink/web_tests/external/wpt/ai/language_detection/capabilities.tentative.https.any.js b/third_party/blink/web_tests/external/wpt/ai/language_detection/capabilities.tentative.https.any.js index 2a06986..3eca511 100644 --- a/third_party/blink/web_tests/external/wpt/ai/language_detection/capabilities.tentative.https.any.js +++ b/third_party/blink/web_tests/external/wpt/ai/language_detection/capabilities.tentative.https.any.js
@@ -1,4 +1,5 @@ // META: title=capabilities test +// META: global=window,worker 'use strict'; @@ -7,4 +8,4 @@ const availability = languageDetectorCapabilities.available; assert_not_equals(availability, "no"); // TODO(crbug.com/349927087): Add languageDetectorCapabilities.languageAvailable("en") once implemented. -}); \ No newline at end of file +});
diff --git a/third_party/blink/web_tests/external/wpt/ai/language_detection/detector.https.tentative.any.js b/third_party/blink/web_tests/external/wpt/ai/language_detection/detector.https.tentative.any.js index 4f962de8..6bd3a41 100644 --- a/third_party/blink/web_tests/external/wpt/ai/language_detection/detector.https.tentative.any.js +++ b/third_party/blink/web_tests/external/wpt/ai/language_detection/detector.https.tentative.any.js
@@ -1,4 +1,5 @@ // META: title=Detect english +// META: global=window,worker 'use strict'; @@ -11,4 +12,4 @@ for (let i = 0; i < results.length - 1; i++) { assert_greater_than_equal(results[i].confidence, results[i + 1].confidence); } -}); \ No newline at end of file +});
diff --git a/third_party/blink/web_tests/external/wpt/css/css-anchor-position/anchor-position-005-print-ref.html b/third_party/blink/web_tests/external/wpt/css/css-anchor-position/anchor-position-005-print-ref.html new file mode 100644 index 0000000..94a1f8e --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-anchor-position/anchor-position-005-print-ref.html
@@ -0,0 +1,7 @@ +<!DOCTYPE html> +<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> +<p>There should be a green square below, and no red.</p> +<div style="width:100px; height:100px; background:green;"></div> + +<p style="break-before:page;">There should be a green square below, and no red.</p> +<div style="width:100px; height:100px; background:green;"></div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-anchor-position/anchor-position-005-print.html b/third_party/blink/web_tests/external/wpt/css/css-anchor-position/anchor-position-005-print.html new file mode 100644 index 0000000..eeae84140 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-anchor-position/anchor-position-005-print.html
@@ -0,0 +1,18 @@ +<!DOCTYPE html> +<title>Basic anchor positioning test for printing</title> +<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> +<link rel="help" href="https://drafts.csswg.org/css-anchor-1/#anchor-pos"> +<link rel="match" href="anchor-position-005-print-ref.html"> +<p>There should be a green square below, and no red.</p> +<div style="width:100px; height:100px; background:red;"> + <div style="anchor-name:--first; width:50px; height:100px; background:green;"></div> +</div> +<div style="height:30px;"></div> +<div style="position:absolute; position-anchor:--first; top:anchor(top); left:anchor(right); width:50px; height:100px; background:green;"></div> + +<p style="break-before:page;">There should be a green square below, and no red.</p> +<div style="width:100px; height:100px; background:red;"> + <div style="anchor-name:--second; width:50px; height:100px; background:green;"></div> +</div> +<div style="height:30px;"></div> +<div style="position:absolute; position-anchor:--second; top:anchor(top); left:anchor(right); width:50px; height:100px; background:green;"></div>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-anchor-position/anchor-position-multicol-011.html b/third_party/blink/web_tests/external/wpt/css/css-anchor-position/anchor-position-multicol-011.html new file mode 100644 index 0000000..eab57bfd --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-anchor-position/anchor-position-multicol-011.html
@@ -0,0 +1,32 @@ +<!DOCTYPE html> +<title>List item marker inside multicol. Markers cannot be anchors.</title> +<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> +<link rel="help" href="https://drafts.csswg.org/css-anchor-position-1/#position-anchor"> +<link rel="help" href="https://drafts.csswg.org/css-lists-3/#marker-properties"> +<link rel="match" href="../reference/ref-filled-green-100px-square.xht"> +<style> + #mc { + columns: 2; + gap: 0; + display: list-item; + list-style-position: outside; + margin-left: 40px; + width: 60px; + color: red; + } + #mc::marker { + /* anchor-name doesn't apply here. */ + anchor-name: --invalid; + } +</style> +<p>Test passes if there is a filled green square and <strong>no red</strong>.</p> +<div style="position:relative;"> + <div id="mc"> + x + <div style="break-before:column; position:relative;"> + <div style="anchor-name:--foo;">y</div> + <div style="position:absolute; position-anchor:--foo; top:anchor(top); right:anchor(right); width:30px; height:100px; background:green;"></div> + </div> + </div> + <div style="position:absolute; position-anchor:--invalid; left:anchor(right, 0px); top:anchor(bottom, 0px); width:70px; height:100px; background:green;"></div> +</div>
diff --git a/third_party/blink/web_tests/http/tests/devtools/a11y-axe-core/elements/event-listeners-a11y-test.js b/third_party/blink/web_tests/http/tests/devtools/a11y-axe-core/elements/event-listeners-a11y-test.js index 84d35a0..d98f02fb 100644 --- a/third_party/blink/web_tests/http/tests/devtools/a11y-axe-core/elements/event-listeners-a11y-test.js +++ b/third_party/blink/web_tests/http/tests/devtools/a11y-axe-core/elements/event-listeners-a11y-test.js
@@ -28,7 +28,8 @@ TestRunner.addResult('Running the axe-core linter on tree element.'); await AxeCoreTestRunner.runValidation(treeElement, NO_REQUIRED_CHILDREN_RULESET); - const toolbarElement = treeElement.parentElement.querySelector('.toolbar'); + const toolbarElement = + treeElement.parentElement?.querySelector('devtools-toolbar'); TestRunner.addResult('Running the axe-core linter on toolbar.'); await AxeCoreTestRunner.runValidation(toolbarElement, DEFAULT_RULESET);
diff --git a/third_party/blink/web_tests/http/tests/devtools/a11y-axe-core/performance/panel-right-toolbar-a11y-test.js b/third_party/blink/web_tests/http/tests/devtools/a11y-axe-core/performance/panel-right-toolbar-a11y-test.js index bb13a1d..08c619f 100644 --- a/third_party/blink/web_tests/http/tests/devtools/a11y-axe-core/performance/panel-right-toolbar-a11y-test.js +++ b/third_party/blink/web_tests/http/tests/devtools/a11y-axe-core/performance/panel-right-toolbar-a11y-test.js
@@ -13,7 +13,7 @@ await PerformanceTestRunner.runPerfTraceWithReload(); const widget = await PerformanceTestRunner.getTimelineWidget(); - await AxeCoreTestRunner.runValidation(widget.panelRightToolbar.element); + await AxeCoreTestRunner.runValidation(widget.panelRightToolbar); TestRunner.completeTest(); })();
diff --git a/third_party/blink/web_tests/http/tests/devtools/a11y-axe-core/performance/panel-toolbar-a11y-test.js b/third_party/blink/web_tests/http/tests/devtools/a11y-axe-core/performance/panel-toolbar-a11y-test.js index 2449b0a..af49fb8 100644 --- a/third_party/blink/web_tests/http/tests/devtools/a11y-axe-core/performance/panel-toolbar-a11y-test.js +++ b/third_party/blink/web_tests/http/tests/devtools/a11y-axe-core/performance/panel-toolbar-a11y-test.js
@@ -13,7 +13,7 @@ await PerformanceTestRunner.runPerfTraceWithReload(); const widget = await PerformanceTestRunner.getTimelineWidget(); - await AxeCoreTestRunner.runValidation(widget.panelToolbar.element); + await AxeCoreTestRunner.runValidation(widget.panelToolbar); TestRunner.completeTest(); })();
diff --git a/third_party/blink/web_tests/http/tests/devtools/elements/styles-4/style-update-during-selector-edit.js b/third_party/blink/web_tests/http/tests/devtools/elements/styles-4/style-update-during-selector-edit.js index 3c639cb..4f65605 100644 --- a/third_party/blink/web_tests/http/tests/devtools/elements/styles-4/style-update-during-selector-edit.js +++ b/third_party/blink/web_tests/http/tests/devtools/elements/styles-4/style-update-during-selector-edit.js
@@ -48,8 +48,8 @@ TestRunner.domModel.addEventListener(SDK.DOMModel.Events.AttrModified, attributeChanged, this); // Click "Add new rule". Elements.ElementsPanel.ElementsPanel.instance() - .stylesWidget.contentElement.querySelector('.styles-pane-toolbar') - .shadowRoot.querySelector('[aria-label="New Style Rule"]') + .stylesWidget.contentElement + .querySelector('[aria-label="New Style Rule"]') .click(); TestRunner.evaluateInPage('addStyleClass()', step2); }
diff --git a/third_party/blink/web_tests/inspector-protocol/css/css-force-specific-pseudo-state-expected.txt b/third_party/blink/web_tests/inspector-protocol/css/css-force-specific-pseudo-state-expected.txt index 187022f..b25fb66 100644 --- a/third_party/blink/web_tests/inspector-protocol/css/css-force-specific-pseudo-state-expected.txt +++ b/third_party/blink/web_tests/inspector-protocol/css/css-force-specific-pseudo-state-expected.txt
@@ -18,6 +18,7 @@ --indeterminate-applied='false' --placeholder-shown-applied='false' --autofill-applied='false' +--open-applied='false' States for editableDiv: --read-only-applied='false' @@ -41,6 +42,7 @@ --indeterminate-applied='true' --placeholder-shown-applied='true' --autofill-applied='true' +--open-applied='true' States for editableDiv: --read-only-applied='true'
diff --git a/third_party/blink/web_tests/inspector-protocol/css/css-force-specific-pseudo-state.js b/third_party/blink/web_tests/inspector-protocol/css/css-force-specific-pseudo-state.js index 39b459c..74eb4275 100644 --- a/third_party/blink/web_tests/inspector-protocol/css/css-force-specific-pseudo-state.js +++ b/third_party/blink/web_tests/inspector-protocol/css/css-force-specific-pseudo-state.js
@@ -21,11 +21,10 @@ }, id, property); } - // TODO(crbug.com/332914922): Also add :link and tests for :visited when the bug is fixed. const pseudoClasses = ['enabled', 'disabled', 'valid', 'invalid', 'user-valid', 'user-invalid', 'required', 'optional', 'read-only', 'read-write', 'in-range', 'out-of-range', 'checked', 'indeterminate', - 'placeholder-shown', 'autofill']; + 'placeholder-shown', 'autofill', 'open']; const pseudoClassProps = pseudoClasses.map(x => `--${x}-applied`); const logAllPseudoClassPropsForDiv = async () => {
diff --git a/third_party/blink/web_tests/inspector-protocol/css/css-get-styles-for-node-ghost-rules-expected.txt b/third_party/blink/web_tests/inspector-protocol/css/css-get-styles-for-node-ghost-rules-expected.txt index 60098afd1..686441bc 100644 --- a/third_party/blink/web_tests/inspector-protocol/css/css-get-styles-for-node-ghost-rules-expected.txt +++ b/third_party/blink/web_tests/inspector-protocol/css/css-get-styles-for-node-ghost-rules-expected.txt
@@ -8,12 +8,6 @@ top: 10px; @[2:4-2:14] top: 10px; @[undefined-undefined] } - { regular - margin-left: 10px; @[4:4-4:28] -} - { regular - margin-right: 10px; @[6:4-6:29] -} Dumping inherited rules: Invalid declarations should cause ghost rules (#invalid) Dumping inline style: @@ -24,12 +18,6 @@ top: 10px; @[9:4-9:14] top: 10px; @[undefined-undefined] } - { regular - -webkit-unsupported-left: 10px; @[11:4-11:35] -} - { regular - -webkit-unsupported-right: 10px; @[13:4-13:36] -} Dumping inherited rules: Ghost rules can appear in nested group rules (#group-rules) Dumping inline style: @@ -40,19 +28,5 @@ top: 10px; @[16:4-16:14] top: 10px; @[undefined-undefined] } -@media (width > 100px) - { regular - padding-left: 20px; @[18:6-18:31] - } - { regular - margin-left: 10px; @[20:4-20:28] -} -@media (width > 100px) - { regular - -webkit-unsupported-left: 20px; @[22:6-22:37] - } - { regular - margin-right: 10px; @[24:4-24:29] -} Dumping inherited rules:
diff --git a/third_party/blink/web_tests/inspector-protocol/css/css-get-styles-for-node-ghost-rules-shadow-expected.txt b/third_party/blink/web_tests/inspector-protocol/css/css-get-styles-for-node-ghost-rules-shadow-expected.txt index 8908c82..fb8b33f 100644 --- a/third_party/blink/web_tests/inspector-protocol/css/css-get-styles-for-node-ghost-rules-shadow-expected.txt +++ b/third_party/blink/web_tests/inspector-protocol/css/css-get-styles-for-node-ghost-rules-shadow-expected.txt
@@ -9,8 +9,5 @@ top: 10px; @[2:10-2:20] top: 10px; @[undefined-undefined] } - { regular - margin-left: 10px; @[4:10-4:34] -} Dumping inherited rules:
diff --git a/third_party/blink/web_tests/inspector-protocol/css/css-get-styles-for-node-nested-groups-expected.txt b/third_party/blink/web_tests/inspector-protocol/css/css-get-styles-for-node-nested-groups-expected.txt index 5c07c78..c2a617c 100644 --- a/third_party/blink/web_tests/inspector-protocol/css/css-get-styles-for-node-nested-groups-expected.txt +++ b/third_party/blink/web_tests/inspector-protocol/css/css-get-styles-for-node-nested-groups-expected.txt
@@ -39,9 +39,5 @@ Dumping matched rules: *#commented-out-property* { regular } -@supports (display: flex) - { regular - color: red; @[20:6-20:23] - } Dumping inherited rules:
diff --git a/third_party/blink/web_tests/inspector-protocol/css/resources/css-force-specific-pseudo-state.css b/third_party/blink/web_tests/inspector-protocol/css/resources/css-force-specific-pseudo-state.css index 046b690..0553ab7f 100644 --- a/third_party/blink/web_tests/inspector-protocol/css/resources/css-force-specific-pseudo-state.css +++ b/third_party/blink/web_tests/inspector-protocol/css/resources/css-force-specific-pseudo-state.css
@@ -15,6 +15,7 @@ --indeterminate-applied: 'false'; --placeholder-shown-applied: 'false'; --autofill-applied: 'false'; + --open-applied: 'false'; } .testcase:enabled { --enabled-applied: 'true'; @@ -64,3 +65,6 @@ .testcase:autofill { --autofill-applied: 'true'; } +.testcase:open { + --open-applied: 'true'; +}
diff --git a/third_party/chromium-variations b/third_party/chromium-variations index de44a12..9be189a 160000 --- a/third_party/chromium-variations +++ b/third_party/chromium-variations
@@ -1 +1 @@ -Subproject commit de44a12bcc9d8b0d3088ae6db3324ef70b0aa2c0 +Subproject commit 9be189a60865bf5fed52f2d6dd76ceb54e231ddb
diff --git a/third_party/dawn b/third_party/dawn index 8c8e273..e2894d1 160000 --- a/third_party/dawn +++ b/third_party/dawn
@@ -1 +1 @@ -Subproject commit 8c8e27355e127401b523e10ce908446719bcf030 +Subproject commit e2894d1f5a19ec70b65828be0c2363f55e1a4327
diff --git a/third_party/devtools-frontend/src b/third_party/devtools-frontend/src index e6bffbe1..32ab3025 160000 --- a/third_party/devtools-frontend/src +++ b/third_party/devtools-frontend/src
@@ -1 +1 @@ -Subproject commit e6bffbe1691bf4294e533ddba391f6739580b9e0 +Subproject commit 32ab3025514394538797f79c89b2f0a02fed255f
diff --git a/third_party/perfetto b/third_party/perfetto index 3cb4734..a49395d 160000 --- a/third_party/perfetto +++ b/third_party/perfetto
@@ -1 +1 @@ -Subproject commit 3cb4734421a917fd662ba881bc94a620726ea603 +Subproject commit a49395d104cee4a11408de2a0b8cde127ba67b5f
diff --git a/third_party/skia b/third_party/skia index fec7d8d..5f2e30e 160000 --- a/third_party/skia +++ b/third_party/skia
@@ -1 +1 @@ -Subproject commit fec7d8df2941914988541de494b25fbdc7906f0a +Subproject commit 5f2e30e0c8bd00b2ff314a6c751ceac95fedb913
diff --git a/third_party/webrtc b/third_party/webrtc index 2849146..cdd2922 160000 --- a/third_party/webrtc +++ b/third_party/webrtc
@@ -1 +1 @@ -Subproject commit 2849146823f9d05c667814914cdcdd53781d7252 +Subproject commit cdd2922312848149a9954e3e7f7c327a9010afda
diff --git a/tools/clang/scripts/update.py b/tools/clang/scripts/update.py index 7209535..8e35b70 100755 --- a/tools/clang/scripts/update.py +++ b/tools/clang/scripts/update.py
@@ -36,7 +36,7 @@ # https://chromium.googlesource.com/chromium/src/+/main/docs/updating_clang.md # Reverting problematic clang rolls is safe, though. # This is the output of `git describe` and is usable as a commit-ish. -CLANG_REVISION = 'llvmorg-20-init-16062-g091448e3' +CLANG_REVISION = 'llvmorg-20-init-17108-g29ed6000' CLANG_SUB_REVISION = 1 PACKAGE_VERSION = '%s-%s' % (CLANG_REVISION, CLANG_SUB_REVISION)
diff --git a/tools/gritsettings/resource_ids.spec b/tools/gritsettings/resource_ids.spec index 30d78ae..2ef05e88 100644 --- a/tools/gritsettings/resource_ids.spec +++ b/tools/gritsettings/resource_ids.spec
@@ -1047,6 +1047,10 @@ "META": {"sizes": {"includes": [5]}}, "includes": [7430], }, + "<(SHARED_INTERMEDIATE_DIR)/components/translate/translate_internals/resources.grd": { + "META": {"sizes": {"includes": [5]}}, + "includes": [7435], + }, "<(SHARED_INTERMEDIATE_DIR)/components/ukm/debug/resources.grd": { "META": {"sizes": {"includes": [5]}}, "includes": [7440],
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 727f4f4..0c33f8f 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -17683,6 +17683,7 @@ <int value="-1117104514" label="smbfs-file-shares"/> <int value="-1116278039" label="ShelfAppScaling:disabled"/> <int value="-1115681358" label="FeedBackToTop:enabled"/> + <int value="-1114996018" label="PermissionElement:disabled"/> <int value="-1114715252" label="WebAuthenticationNewPasskeyUI:disabled"/> <int value="-1114080030" label="ResourceLoadingHints:enabled"/> <int value="-1113746031" label="AppDeduplicationService:enabled"/> @@ -23707,6 +23708,7 @@ <int value="1290904214" label="DiagnosticsAppNavigation:enabled"/> <int value="1291257442" label="TabsInCBD:disabled"/> <int value="1291453047" label="UseMultiPlaneFormatForSoftwareVideo:enabled"/> + <int value="1291546955" label="PermissionElement:enabled"/> <int value="1291761696" label="CCTModuleDexLoading:disabled"/> <int value="1291790140" label="FastPairSubsequentPairingUX:enabled"/> <int value="1291966558" label="ScrollAnchoring:disabled"/>
diff --git a/tools/metrics/histograms/metadata/autofill/histograms.xml b/tools/metrics/histograms/metadata/autofill/histograms.xml index df7f849d..8d9192b 100644 --- a/tools/metrics/histograms/metadata/autofill/histograms.xml +++ b/tools/metrics/histograms/metadata/autofill/histograms.xml
@@ -1003,6 +1003,31 @@ </histogram> <histogram + name="Autofill.AddressSuggestionOnTypingAccepted.DaysSinceLastUse.Profile" + units="days" expires_after="2025-06-22"> + <owner>brunobraga@google.com</owner> + <owner>chrome-autofill-alerts@google.com</owner> + <summary> + Logged at submission/navigation time, specifies the last time in days a + profile that was used to build Autofill on typing suggestions (and later + accepted) was accepted before by a previous suggestion (such as a regular + address suggestion). + </summary> +</histogram> + +<histogram + name="Autofill.AddressSuggestionOnTypingShown.DaysSinceLastUse.Profile" + units="days" expires_after="2025-06-22"> + <owner>brunobraga@google.com</owner> + <owner>chrome-autofill-alerts@google.com</owner> + <summary> + Logged at submission/navigation time, specifies the last time in days a + profile that was used to build Autofill on typing suggestions was accepted + before by a previous suggestion (such as a regular address suggestion). + </summary> +</histogram> + +<histogram name="Autofill.AddressTokenVerificationStatusAtProfileUsage.{AddressType}" enum="AufofillStructuredTokenVerificationStatus" expires_after="2025-06-22"> <owner>koerber@google.com</owner>
diff --git a/tools/metrics/histograms/metadata/signin/histograms.xml b/tools/metrics/histograms/metadata/signin/histograms.xml index 299795d..f539674 100644 --- a/tools/metrics/histograms/metadata/signin/histograms.xml +++ b/tools/metrics/histograms/metadata/signin/histograms.xml
@@ -1170,7 +1170,7 @@ </histogram> <histogram name="Signin.Extensions.GaiaRemoteConsentFlowResult" - enum="GaiaRemoteConsentFlowResult" expires_after="2025-01-05"> + enum="GaiaRemoteConsentFlowResult" expires_after="2025-06-05"> <owner>alexilin@chromium.org</owner> <owner>droger@chromium.org</owner> <summary> @@ -1914,7 +1914,7 @@ </histogram> <histogram name="Signin.OAuth2MintToken.BoundFetchAuthError" - enum="GoogleServiceAuthError" expires_after="2025-02-10"> + enum="GoogleServiceAuthError" expires_after="2025-06-22"> <owner>alexilin@chromium.org</owner> <owner>droger@chromium.org</owner> <owner>chrome-signin-team@google.com</owner> @@ -1926,7 +1926,7 @@ </histogram> <histogram name="Signin.OAuth2MintToken.BoundFetchEncryptionError" - enum="TokenBindingResponseEncryptionError" expires_after="2025-02-10"> + enum="TokenBindingResponseEncryptionError" expires_after="2025-06-22"> <owner>alexilin@chromium.org</owner> <owner>droger@chromium.org</owner> <owner>chrome-signin-team@google.com</owner> @@ -1963,7 +1963,7 @@ </histogram> <histogram name="Signin.OAuthMultiloginResponseEncryptionError" - enum="TokenBindingResponseEncryptionError" expires_after="2025-02-10"> + enum="TokenBindingResponseEncryptionError" expires_after="2025-06-22"> <owner>alexilin@chromium.org</owner> <owner>chrome-signin-team@google.com</owner> <summary> @@ -2791,7 +2791,7 @@ </histogram> <histogram name="Signin.TokenBinding.BoundToTheSameKey" - enum="BooleanBoundToTheSameKey" expires_after="2025-02-10"> + enum="BooleanBoundToTheSameKey" expires_after="2025-06-22"> <owner>alexilin@chromium.org</owner> <owner>chrome-signin-team@google.com</owner> <summary> @@ -2804,7 +2804,7 @@ </histogram> <histogram name="Signin.TokenBinding.GenerateAssertionResult" - enum="TokenBindingGenerateAssertionResult" expires_after="2025-02-10"> + enum="TokenBindingGenerateAssertionResult" expires_after="2025-06-22"> <owner>alexilin@chromium.org</owner> <owner>chrome-signin-team@google.com</owner> <summary>
diff --git a/tools/metrics/histograms/metadata/web_rtc/histograms.xml b/tools/metrics/histograms/metadata/web_rtc/histograms.xml index 5ee0c6a8..29a0abf5 100644 --- a/tools/metrics/histograms/metadata/web_rtc/histograms.xml +++ b/tools/metrics/histograms/metadata/web_rtc/histograms.xml
@@ -2311,7 +2311,7 @@ </histogram> <histogram name="WebRTC.Video.HarmonicFrameRate" units="fps" - expires_after="2025-05-25"> + expires_after="2026-01-10"> <owner>ssilkin@chromium.org</owner> <owner>webrtc-video@google.com</owner> <summary> @@ -3101,7 +3101,7 @@ </histogram> <histogram name="WebRTC.Video.Screenshare.HarmonicFrameRate" units="fps" - expires_after="2025-01-16"> + expires_after="2026-01-10"> <owner>ssilkin@chromium.org</owner> <owner>webrtc-video@google.com</owner> <summary>
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json index 41eae33..b50da4c 100644 --- a/tools/perf/core/perfetto_binary_roller/binary_deps.json +++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -5,8 +5,8 @@ "full_remote_path": "perfetto-luci-artifacts/v49.0/linux-arm64/trace_processor_shell" }, "win": { - "hash": "570aa40c4b48e14057b1433e4abae692286b77da", - "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/a0e3ba55d82f3371343a696aa08e8d2d840eef9e/trace_processor_shell.exe" + "hash": "1944107685fc03782a7b1f9b6b9064d103ef8795", + "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/win/a49395d104cee4a11408de2a0b8cde127ba67b5f/trace_processor_shell.exe" }, "linux_arm": { "hash": "a15d8362d80cfd7cd8d785cf6afc22586de688cd", @@ -22,7 +22,7 @@ }, "linux": { "hash": "03de46bc41d1443a10ef4043cf4918ba26698f38", - "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/3cb4734421a917fd662ba881bc94a620726ea603/trace_processor_shell" + "full_remote_path": "chromium-telemetry/perfetto_binaries/trace_processor_shell/linux/a49395d104cee4a11408de2a0b8cde127ba67b5f/trace_processor_shell" } }, "power_profile.sql": {
diff --git a/tools/rust/update_rust.py b/tools/rust/update_rust.py index d1068679..baf53a9 100755 --- a/tools/rust/update_rust.py +++ b/tools/rust/update_rust.py
@@ -31,7 +31,7 @@ # These fields are written by //tools/clang/scripts/upload_revision.py, and # should not be changed manually. -RUST_REVISION = '8a1f8039a7ded79d3d4fe97b110016d89f2b11e2' +RUST_REVISION = 'ad211ced81509462cdfe4c29ed10f97279a0acae' RUST_SUB_REVISION = 1 # The revision of Crubit to use from https://github.com/google/crubit
diff --git a/tools/typescript/validate_tsconfig.py b/tools/typescript/validate_tsconfig.py index ad8054a..e2089ea 100644 --- a/tools/typescript/validate_tsconfig.py +++ b/tools/typescript/validate_tsconfig.py
@@ -170,6 +170,7 @@ 'components/net_log/resources', 'components/policy/resources/webui', 'components/safe_browsing/content/browser/web_ui/resources', + 'components/translate/translate_internals', 'content/browser/webrtc/resources', 'ui/webui/resources/js', 'ui/webui/resources/mojo',
diff --git a/ui/views/BUILD.gn b/ui/views/BUILD.gn index 469c6be..1aed3dbb 100644 --- a/ui/views/BUILD.gn +++ b/ui/views/BUILD.gn
@@ -24,6 +24,7 @@ icon_directory = "vector_icons" sources = [ + "account_box.icon", "arrow_drop_down.icon", "checkbox_active.icon", "checkbox_check_cr2023.icon", @@ -50,6 +51,7 @@ "open.icon", "options.icon", "pin.icon", + "psychiatry.icon", "radio_button_active.icon", "radio_button_normal.icon", "uninstall.icon",
diff --git a/ui/views/vector_icons/account_box.icon b/ui/views/vector_icons/account_box.icon new file mode 100644 index 0000000..8ea6ef30 --- /dev/null +++ b/ui/views/vector_icons/account_box.icon
@@ -0,0 +1,56 @@ +// Copyright 2025 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +CANVAS_DIMENSIONS, 12, +FILL_RULE_NONZERO, +MOVE_TO, 1.6f, 9.52f, +CUBIC_TO, 2.22f, 9.01f, 2.91f, 8.63f, 3.67f, 8.38f, +CUBIC_TO, 4.42f, 8.13f, 5.2f, 8, 6, 8, +CUBIC_TO, 6.8f, 8, 7.58f, 8.12f, 8.33f, 8.37f, +CUBIC_TO, 9.09f, 8.61f, 9.78f, 8.99f, 10.4f, 9.52f, +V_LINE_TO, 1.6f, +H_LINE_TO, 1.6f, +V_LINE_TO, 9.52f, +CLOSE, +MOVE_TO, 6, 7.2f, +CUBIC_TO, 6.67f, 7.2f, 7.23f, 6.97f, 7.7f, 6.5f, +CUBIC_TO, 8.17f, 6.03f, 8.4f, 5.47f, 8.4f, 4.8f, +CUBIC_TO, 8.4f, 4.13f, 8.17f, 3.57f, 7.7f, 3.1f, +CUBIC_TO, 7.23f, 2.63f, 6.67f, 2.4f, 6, 2.4f, +CUBIC_TO, 5.33f, 2.4f, 4.77f, 2.63f, 4.3f, 3.1f, +CUBIC_TO, 3.83f, 3.57f, 3.6f, 4.13f, 3.6f, 4.8f, +CUBIC_TO, 3.6f, 5.47f, 3.83f, 6.03f, 4.3f, 6.5f, +CUBIC_TO, 4.77f, 6.97f, 5.33f, 7.2f, 6, 7.2f, +CLOSE, +MOVE_TO, 1.6f, 11.6f, +CUBIC_TO, 1.27f, 11.6f, 0.98f, 11.48f, 0.75f, 11.25f, +CUBIC_TO, 0.52f, 11.02f, 0.4f, 10.73f, 0.4f, 10.4f, +V_LINE_TO, 1.6f, +CUBIC_TO, 0.4f, 1.27f, 0.52f, 0.98f, 0.75f, 0.75f, +CUBIC_TO, 0.98f, 0.52f, 1.27f, 0.4f, 1.6f, 0.4f, +H_LINE_TO, 10.4f, +CUBIC_TO, 10.73f, 0.4f, 11.02f, 0.52f, 11.25f, 0.75f, +CUBIC_TO, 11.48f, 0.98f, 11.6f, 1.27f, 11.6f, 1.6f, +V_LINE_TO, 10.4f, +CUBIC_TO, 11.6f, 10.73f, 11.48f, 11.02f, 11.25f, 11.25f, +CUBIC_TO, 11.02f, 11.48f, 10.73f, 11.6f, 10.4f, 11.6f, +H_LINE_TO, 1.6f, +CLOSE, +MOVE_TO, 2.42f, 10.4f, +H_LINE_TO, 9.58f, +CUBIC_TO, 9.07f, 10.01f, 8.51f, 9.72f, 7.9f, 9.52f, +CUBIC_TO, 7.29f, 9.31f, 6.66f, 9.2f, 6, 9.2f, +CUBIC_TO, 5.34f, 9.2f, 4.71f, 9.31f, 4.1f, 9.52f, +CUBIC_TO, 3.5f, 9.72f, 2.94f, 10.01f, 2.42f, 10.4f, +CLOSE, +MOVE_TO, 6, 6, +CUBIC_TO, 5.67f, 6, 5.38f, 5.88f, 5.15f, 5.65f, +CUBIC_TO, 4.92f, 5.42f, 4.8f, 5.13f, 4.8f, 4.8f, +CUBIC_TO, 4.8f, 4.47f, 4.92f, 4.18f, 5.15f, 3.95f, +CUBIC_TO, 5.38f, 3.72f, 5.67f, 3.6f, 6, 3.6f, +CUBIC_TO, 6.33f, 3.6f, 6.62f, 3.72f, 6.85f, 3.95f, +CUBIC_TO, 7.08f, 4.18f, 7.2f, 4.47f, 7.2f, 4.8f, +CUBIC_TO, 7.2f, 5.13f, 7.08f, 5.42f, 6.85f, 5.65f, +CUBIC_TO, 6.62f, 5.88f, 6.33f, 6, 6, 6, +CLOSE
diff --git a/ui/views/vector_icons/psychiatry.icon b/ui/views/vector_icons/psychiatry.icon new file mode 100644 index 0000000..59216cf1 --- /dev/null +++ b/ui/views/vector_icons/psychiatry.icon
@@ -0,0 +1,51 @@ +// Copyright 2025 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +CANVAS_DIMENSIONS, 12, +FILL_RULE_NONZERO, +MOVE_TO, 5.4f, 11.6f, +V_LINE_TO, 6.65f, +H_LINE_TO, 5.25f, +CUBIC_TO, 4.62f, 6.65f, 4.01f, 6.53f, 3.42f, 6.3f, +CUBIC_TO, 2.84f, 6.06f, 2.32f, 5.71f, 1.87f, 5.27f, +CUBIC_TO, 1.39f, 4.81f, 1.02f, 4.28f, 0.77f, 3.68f, +CUBIC_TO, 0.52f, 3.08f, 0.4f, 2.46f, 0.4f, 1.8f, +V_LINE_TO, 0.4f, +H_LINE_TO, 1.8f, +CUBIC_TO, 2.43f, 0.4f, 3.04f, 0.52f, 3.62f, 0.77f, +CUBIC_TO, 4.19f, 1, 4.71f, 1.34f, 5.17f, 1.78f, +CUBIC_TO, 5.49f, 2.09f, 5.76f, 2.44f, 5.97f, 2.83f, +CUBIC_TO, 6.19f, 3.21f, 6.36f, 3.61f, 6.47f, 4.03f, +CUBIC_TO, 6.89f, 3.44f, 7.43f, 2.99f, 8.1f, 2.68f, +CUBIC_TO, 8.77f, 2.36f, 9.47f, 2.2f, 10.2f, 2.2f, +H_LINE_TO, 11.6f, +V_LINE_TO, 3.6f, +CUBIC_TO, 11.6f, 4.26f, 11.47f, 4.88f, 11.22f, 5.48f, +CUBIC_TO, 10.97f, 6.08f, 10.61f, 6.61f, 10.13f, 7.07f, +CUBIC_TO, 9.69f, 7.46f, 9.19f, 7.76f, 8.65f, 7.97f, +CUBIC_TO, 8.11f, 8.18f, 7.54f, 8.28f, 6.95f, 8.28f, +H_LINE_TO, 6.6f, +V_LINE_TO, 11.6f, +H_LINE_TO, 5.4f, +CLOSE, +MOVE_TO, 5.4f, 5.4f, +CUBIC_TO, 5.4f, 4.89f, 5.31f, 4.39f, 5.13f, 3.92f, +CUBIC_TO, 4.97f, 3.43f, 4.71f, 3.01f, 4.35f, 2.65f, +CUBIC_TO, 3.99f, 2.29f, 3.57f, 2.03f, 3.08f, 1.87f, +CUBIC_TO, 2.61f, 1.69f, 2.11f, 1.6f, 1.6f, 1.6f, +CUBIC_TO, 1.6f, 2.11f, 1.68f, 2.61f, 1.85f, 3.1f, +CUBIC_TO, 2.03f, 3.58f, 2.29f, 3.99f, 2.65f, 4.35f, +CUBIC_TO, 3.01f, 4.71f, 3.42f, 4.97f, 3.9f, 5.15f, +CUBIC_TO, 4.39f, 5.32f, 4.89f, 5.4f, 5.4f, 5.4f, +CLOSE, +MOVE_TO, 6.6f, 7.2f, +CUBIC_TO, 7.11f, 7.2f, 7.61f, 7.12f, 8.08f, 6.95f, +CUBIC_TO, 8.57f, 6.77f, 8.99f, 6.51f, 9.35f, 6.15f, +CUBIC_TO, 9.71f, 5.79f, 9.97f, 5.38f, 10.13f, 4.9f, +CUBIC_TO, 10.31f, 4.41f, 10.4f, 3.91f, 10.4f, 3.4f, +CUBIC_TO, 9.89f, 3.4f, 9.39f, 3.49f, 8.9f, 3.67f, +CUBIC_TO, 8.42f, 3.83f, 8.01f, 4.09f, 7.65f, 4.45f, +CUBIC_TO, 7.29f, 4.81f, 7.03f, 5.23f, 6.85f, 5.72f, +CUBIC_TO, 6.68f, 6.19f, 6.6f, 6.69f, 6.6f, 7.2f, +CLOSE